Я перехожу к пакетному рабочему процессу для проекта, над которым я работал. Я хочу иметь возможность разделить среду разработки и производства, и я думаю, что setuptools предлагает эту возможность с некоторой степенью легкости.Относительный импорт Python с использованием setuptools со сценариями
У меня есть проект структурирована следующим образом:
modulename/
setup.py
modulename/
file_a.py
script.py
В script.py, я хочу импортировать file_a.py. В настоящее время я делаю это, делая import file_a
.
Мой setup.py выглядит следующим образом:
from setuptools import setup, find_packages
setup(name='modulename',
packages = find_packages(),
package_dir = {'': '../modulename'},
scripts = ['modulename/script.py'])
В настоящее время, когда я бегу script.py
после выполнения python setup.py install
, я получаю сообщение об ошибке:
SystemError: Parent module '' not loaded, cannot perform relative import
Я пробовал различные перестановки от package_dir = ...
, наиболее заметно package_dir = {'': 'modulename'}
, но это порождает другую ошибку при установке, error: package directory 'modulename/modulename' does not exist
Я не уверен, что я делаю неправильно. Документация онлайн для setuptools относительно невелика в отношении ситуаций, связанных с относительным импортом. Может ли кто-нибудь указать мне в правильном направлении?
Я предполагаю, что проблема заключается не в 'setup.py', а' script.py', запущенной как модуль '__main__', и одновременном использовании относительного импорта. Взгляните [здесь] (http://stackoverflow.com/questions/16981921/relative-imports-in-python-3) –
Хорошо, так перемещение здесь, чтобы сохранить скрипт вне пакета, а затем просто использовать нормальный импорт? –
Это, по сути, это, я полагаю. –