python - 打包库的正确方法,以便它在不带前导包名称的情况下正确导入

标签 python pypi

我正在尝试将包发布到 PyPI,但遇到导入问题。

我的包设置如下:

mypackage/
    setup.py
    mypackage/
        __init__.py
        mypackage.py

mypackage.py中,我有一个类:MyPackageWrapper,并且__init__.py是空的。

在开发过程中,我是这样做的:

from mypackage import MyPackageWrapper

这有效。但是,我将初始版本发布到 PyPI 后,上述内容不再有效。出现错误 ImportError: Cannot import name MyPackageWrapper

我必须有这样的导入:

from mypackage.mypackage import MyPackageWrapper

import mypackage
mypackage.mypackage.MyPackageWrapper()

如何摆脱上述两者中领先的 mypackage ,以便我可以使用:

from mypackage import MyPackageWrapper    # As done in development, or

import mypackage
mypackage.MyPackageWrapper()

最佳答案

您的__init__.py 文件应包含:

from mypackage.mypackage import MyPackageWrapper

关于python - 打包库的正确方法,以便它在不带前导包名称的情况下正确导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35611413/

相关文章:

python - 在 PyPI 上上传的 Python 库的分发格式

Python @property 与 @property.getter

python - 防止为 MonitoredTrainingSession 分配 GPU 内存

package - HTTP错误: 400 client Error: user 'x' has no verified email addresses while pushing python package to pypi

python - pip 安装选项 "ignore-installed"和 "force-reinstall"之间的区别

python-3.x - 如何在 Windows 上指定 pytorch 作为包要求?

python - 如何使用 Python 删除数据框中的重复项

python - 尝试并排除(TypeError)

python - Django - 关于外键的 AutoField

python - 如何使用 Conda 下载 python 包,然后离线安装?