Я готовлюсь к развертыванию пакета Python со следующим макетом:
MyPackage/
setup.py
MyPackage/
__init__.py
__main__.py
lib/
__init__.py
utils.py
db/
__init__.py
db1.py
db2.py
tasks/
__init__.py
something.py
setup.py
содержит:
setup(name = MyPackage,
...
packages = find_packages(),
include_package_data = True,
entry_points = {"console_scripts" : [
"do_something = MyPackage.__main__:main"
]})
__main__.py
содержит:
import tasks.something as something
something.my_function()
something
модуль содержит:
import db.db1 as db1
import db.db2 as db2
def my_function():
db1.this_func(...)
db2.that_func(...)
db1
содержит:
import sqlalchemy
import lib.utils as utils
def this_func(...):
sqlalchemy.create_engine(...)
и db2
содержит:
import sqlalchemy
import lib.utils as utils
def that_func(...):
sqlalchemy.create_engine(...)
При запуске из установленного каталога site-packages
, __main__.py
завершается без проблем. Если я выполняю import MyPackage.tasks.something as something
в интерактивном сеансе, модуль также импортирует с ошибкой. Однако, когда я запускаю сценарий console_scripts
script do_something
, я получаю ModuleNotFound
ошибок для tasks
.
Что заставляет мой скрипт консоли не находить подпакеты?
Заранее спасибо!