带有Setuptools模块的Python软件包没有属性



我正在与Python包装上的PyCon视频一起关注。

我有一个目录:

  • mypackage/
    • __init__.py
    • mypackage.py
  • readme.md
  • setup.py

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()
)

现在我创建一个虚拟env,并使用:

安装软件包
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文件中。

最新更新