AttributeError:扩展实例没有属性'__version__'

时间:2013-04-30 19:34:57

标签: python

这是脚本..

from distutils.core import setup, Extension

nmap = Extension('nmap',sources = ['nmap/nmap.py', 
                           'nmap/__init__.py', 'nmap/example.py'])

from nmap import *

setup (
    name = 'python-nmap',
    version = nmap.__version__,
    author = 'Alexandre Norman',
    author_email = 'norman@xael.org',
    license ='gpl-3.0.txt',
    keywords="nmap, portscanner, network, sysadmin",)

...我收到了这个错误:

Traceback (most recent call last):
  File "C:\Python27\nmap.py", line 6, in <module>
    from nmap import *
  File "C:\Python27\nmap.py", line 17, in <module>
    version = nmap.__version__,
AttributeError: Extension instance has no attribute '__version__'

1 个答案:

答案 0 :(得分:0)

这里有很多问题。

  1. 您的nmap包不是扩展名,它是纯Python包;不要为它创建Extension对象。 Python扩展名用C or C++编写。

  2. 您尝试访问nmap.__version__,大概是因为您在nmap/__init__.py中定义了该变量,但此处nmap是您创建的Extension个对象;它试图从错误的东西中获取变量。

  3. 即使您删除了Extension对象,您仍然无法访问nmap.__version__,因为您错误地导入了包裹;你打算用import nmap

  4. 您实际上从未将包裹传递给setup,因此distutils将无法了解相关信息。有几个例子说明如何in the documentation

  5. distutils documentation非常大,但最好至少阅读一遍所有内容。