打包库的正确方法,以便它在没有前导包名称的情况下正确导入

Proper way to package a library so that it imports correctly without leading package name

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

我的包是这样设置的:

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

mypackage.py 中,我有一个 class: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