2015-02-12 5 views
2

Я пытаюсь создать программу под названием dnsrep в Python, я использую setuptools, чтобы я мог вызвать модуль dnsrep без использования команды python dnsrep. Сценарий setup.py я написал приведен ниже:ImportError при использовании console_scripts в setuptools

from setuptools import setup, find_packages 

setup(
    name='dnsrep', 
    version='0.1', 
    description='Program that gives a reputation score to url\'s\n.', 
    entry_points = { 
     'console_scripts': ['dnsrep = dnsrep:main'] 
    }, 
    zip_safe=True, 
) 

установить модуль с помощью команды:

python setup.py install 

Мой модуль регистрируется, но когда я запускаю его я получаю сообщение об ошибке:

Traceback (most recent call last): 
File "/Library/Frameworks/Python.framework/Versions/2.7/bin/dnsrep", line 9, in <module> 
    load_entry_point('dnsrep==0.1', 'console_scripts', 'dnsrep')() 
    File "build/bdist.macosx-10.6-intel/egg/pkg_resources/__init__.py", line 521, in load_entry_point 
    File "build/bdist.macosx-10.6-intel/egg/pkg_resources/__init__.py", line 2632, in load_entry_point 
    File "build/bdist.macosx-10.6-intel/egg/pkg_resources/__init__.py", line 2312, in load 
    File "build/bdist.macosx-10.6-intel/egg/pkg_resources/__init__.py", line 2318, in resolve 
ImportError: No module named dnsrep 

ответ

3

Вы должны установить свой скрипт python, прежде чем вы сможете позвонить ему через ваш entry point

Это мой фиктивный проект:

dnsrep/ 
├── dnsrep.py 
└── setup.py 

Это как setup.py выглядит следующим образом:

from setuptools import setup 
setup(
    name='dnsrep', 
    version='0.1', 
    description='Program that gives a reputation score to url\'s\n.', 
    py_modules=['dnsrep'], 
    entry_points = { 
     'console_scripts': ['dnsrep = dnsrep:main'] 
    }, 
    zip_safe=True, 
) 

Обратите внимание на аргумент py_modules=['dnsrep'], который устанавливает dnsrep.py в качестве нового модуля.

Наконец, это моя фиктивная реализация dnsrep.py:

from __future__ import print_function 

def main(): 
    print("Hey, it works!") 

После установки, все работает, как ожидается, и $ dnsrep принтами: Hey, it works!

+0

Спасибо, что работали! –

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