Python 带有 setuptools 模块的包没有属性

Python package with setuptools module has no attribute

我正在关注这个关于 python 包装的 pycon 视频。

我有一个目录:

mypackage.py的内容:

class MyPackage():                                                                                                                                                                            
    '''
    My Damn Package
    '''
    def spam(self):
        return "eggs"

setup.py的内容:

import setuptools                                                                                                                                                                             

setuptools.setup(
    name='mypackage',
    version='0.0.1',
    description='My first package',
    packages=setuptools.find_packages()
)

现在我创建一个虚拟环境并安装包:

pip install -e .

现在我这样做了:

python
>>> import mypackage
>>> mypackage.MyPackage().spam()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'mypackage' has no attribute 'MyPackage'

为什么这不能按照这个人的教程工作?

当您执行 import mypackage 时,您仅导入 mypackage/__init__.py。要到达 MyPackage,您需要 mypackage/mypackage.py:

from mypackage import mypackage

您可以将 from .mypackage import * 放入 init.py 文件中。