正在导入具有相同基本包的包

2024-05-16 11:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的图书馆要分拆。有以下程序包: hdx.datahdx.facadeshdx.utilities

我想搬家hdx.公用事业添加到一个单独的项目hdx python utilities(在PyPi上),然后将其作为一个需求与包一起添加到项目中hdx.数据以及hdx.正面(hdx python api)。问题是我在项目hdx pythonapi中执行from hdx.utilities.session import get_session时得到了ImportError: No module named 'hdx.utilities'。你知道吗

有没有什么方法可以在python3+和python2.7中实现这一点(在这两个版本中都不重命名顶级包名hdx),从而允许hdx-pythonapi和hdx-Python实用程序在安装它们的任何项目中工作?你知道吗


Tags: 数据项目fromimportpypi程序包apipythonapi
1条回答
网友
1楼 · 发布于 2024-05-16 11:26:35

There are three ways of doing namespaced packages

  • 本机(Python 3.3)
  • pkgutil样式(Python 2和Python 3,与本机兼容)
  • pkg\u resources-style(与上述内容不兼容,已弃用,不建议使用)

为python2和python3执行命名空间包的推荐方法是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__)

相关问题 更多 >