我想要拆分一个大型图书馆。有包裹:
hdx.data
hdx.facades
hdx.utilities
我想将hdx.utilities移动到一个单独的项目hdx-python-utilities(在PyPi上),然后将其作为需求添加到项目中,包含hdx.data和hdx.facades(hdx-python-api) 。问题是我在项目hdx-python-api中执行ImportError: No module named 'hdx.utilities'
时得到from hdx.utilities.session import get_session
。
有没有什么方法可以在Python 3+和2.7中完成这项工作(无需在其中任何一个中重命名顶级包名称hdx),允许hdx-python-api和hdx-python-utilities在任何项目中都可以工作安装它们?
答案 0 :(得分:1)
There are three ways of doing namespaced packages:
为Python 2和3执行命名空间包的推荐方法是pkgutil-style namespace packages:
您可以为hpx-python-api
setup.py
hpx/
__init__.py # namespace init, see content below
data/
__init__.py
...
facades/
__init__.py
...
以及hpx-python-utilities
setup.py
hpx/
__init__.py # namespace init, see content below
utilities/
__init__.py
...
命名空间包的两个__init__.py
文件只需包含以下内容:
__path__ = __import__('pkgutil').extend_path(__path__, __name__)