2013-04-30 4 views
-1

Вот сценарий ..AttributeError: экземпляр Extension не имеет атрибута '__version__'

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 = '[email protected]', 
    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__' 
+0

Редактировать сообщение, используя обратные ссылки ', окружающие все двойные символы подчеркивания, чтобы мы могли сказать, когда вы хотели использовать эту грань, и когда (если вообще) вы хотели что-то сделать. – BlackVegetable

ответ

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.

distutils documentation довольно большой, но это хорошая идея, чтобы прочитать все это, по крайней мере один раз.

Смежные вопросы