Я использую setuptools 40.8.0 под python 3.7.2, чтобы упаковать вместе некоторые модули и пакеты, чтобы сделать их доступными для всей системы.Моя цель - создать чистое пространство имен, в котором функции объединены в функциональные блоки.
Моя структура папок выглядит следующим образом:
mymodule
| setup.py
| mymodule
- | __init__.py
- |package_foo
- __init__.py
- some_script.py
setup.py:
from setuptools import setup, find_packages
setup(name='mymodule',
version='1.0',
packages=find_packages(),
zip_safe=False)
верхний уровень __init__.py
:
from . import package_foo
второй уровень __init__.py
:
from .some_script import some_function
(Я на самом деле не уверен, зачем нужна первая точка в импорте, ноКажется, я не делаю его работоспособным без.)
Теперь, если я сделаю
import mymodule
, у меня будет mymodule.package_foo.some_function
в моем пространстве имен (которое я хочу), но также mymodule.package_foo.some_script
(что я не хочу).Я мог бы добавить строку на втором уровне __init__.py
, удалив some_script
, выполнив
del some_script
, но это не так.Есть ли другой, более элегантный способ добиться того, что я пытаюсь?Или стоит оставить some_script
в пространстве имен?