首页 > 解决方案 > 带有 setuptools 模块的 Python 包没有属性

问题描述

我正在关注这个关于 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'

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

标签: pythonpypi

解决方案


当你这样做时,import mypackage你只导入mypackage/__init__.py. 为了得到MyPackage你需要mypackage/mypackage.py

from mypackage import mypackage

推荐阅读