Я хочу импортировать один пакет в другой в каталоге моего проекта - PullRequest
0 голосов
/ 12 июля 2020

Моя структура проекта:

     project
     |--main
     |   |--__init_.py
     |   |-- file_to_be_imported.py
     |--tests
         |--conftest.py

Я хочу импортировать file_to_be, импортированный в conftest в тестах.

"Каталог, содержащий запускаемый скрипт, помещается в начало поиска путь перед стандартным путем к библиотеке. Это означает, что сценарии в этом каталоге будут загружены вместо модулей с тем же именем в каталоге библиотеки. Это ошибка, если замена не предполагается ". из Пути поиска модуля

Итак, я прочитал этот документ и использовал:

import sys
from os import path
sys.path.append(path.dirname(path.dirname(path.abspath(__file__))))

Этот код в conftest. Работает нормально. Но есть ли другой способ без использования приведенного выше фрагмента кода?

1 Ответ

0 голосов
/ 12 июля 2020

Вам не нужно использовать этот код. Все, что вам нужно сделать, это добавить __init__.py в каталог tests . Ваш проект будет выглядеть так:

 project
 |--main
 |   |--__init__.py
 |   |-- file_to_be_imported.py
 |--tests
     |--__init__.py
     |--conftest.py

И в conftest.py вы просто импортируете код из основного

from main import file_to_be_imported
#Write test

EDIT: А затем вы выполняете свой файл как модуль, а не как обычный python файл

python -m test.conftest

Если вы хотите запустить его как обычный python файл, необходим sys.path.

...