在 setuptools 中使用 console_scripts 时出现导入错误

2024-01-03

我正在尝试构建一个名为dnsrep在Python中,我使用setuptools,这样我就可以调用dnsrep不使用命令的模块python dnsrep. The setup.py我写的脚本如下:

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

您必须先安装 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!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 setuptools 中使用 console_scripts 时出现导入错误 的相关文章

随机推荐