Python - Импорт модулей пакета до и после установки setup.py - PullRequest
0 голосов
/ 06 декабря 2018

Предположим, пакет Python (например, MyPackage), который состоит из нескольких модулей (например, MyModule1.py и MyModule2.py) и набора юнит-тестов (например, в MyPackage_test.py).

.
├── MyPackage
│   ├── __init__.py
│   ├── MyModule1.py
│   └── MyModule2.py
├── README.md
├── requirements.txt
├── setup.py
└── tests
    └── MyPackage_test.py

Я бы хотел импортировать функции MyModule1.py в единицах тестирования MyPackage_test.py.В частности, я хотел бы импортировать функции как до, так и после установки пакета через setup.py install MyPackage.

В настоящее время я использую две отдельные команды, в зависимости от состояния до или после установки пакета:

# BEFORE
import sys, os
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'MyPackage'))

# AFTER
import MyPackage

Можно ли это сделать одной командой?

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

в Pycharm IDE вы можете легко импортировать метод. Установив рабочий каталог в папку, содержащую все файлы.
И затем в файле MyPackage __init__.py импортируйте все функции из MyModule1.py и MyModule2.py.
тогда в MyPackage_test.py вы можете использовать

import MyPackage 
from MyPackage import xyz
0 голосов
/ 10 декабря 2018

Опция 1 :

Кажется, что следующая команда делает то, что мне нужно:

sys.path.append(os.path.join(__file__.split(__info__)[0] + __info__), __info__)

Опция 2 :

В зависимости от местоположения __init__.py это также работает:

sys.path.append(os.path.dirname(os.path.split(inspect.getfile(MyPackage))[0]))

Опция 3 :

Кроме того, ResourceManager API кажется, предлагает дополнительные методы.

...