使用entry_points的Setuptools

4

我希望使用setuptools安装一个脚本,设置如下:

在我的开发目录中有以下文件:

  • setup.py 和
  • z_script.py。

z_script.py 文件如下:

def main():
    print "Running..."

我的setup.py看起来像这样:

from setuptools import setup

setup(
      name = 'z_script', version = '0.2', 
      entry_points = {"console_scripts": ["z_script = z_script:main"]},
      )

当我运行python setup.py install时,脚本成功安装到了正确的bin目录中。

然而,当我使用z_script运行脚本时,会出现错误:

Traceback (most recent call last):
  File "./z_script", line 8, in <module>
    load_entry_point('z-script==0.2', 'console_scripts', 'z_script')()
  File "/home/woltan/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 318, in load_entry_point
  File "/home/woltan/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 2221, in load_entry_point
  File "/home/woltan/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/pkg_resources.py", line 1954, in load
ImportError: No module named z_script
bin目录可以通过系统的PATH环境变量访问,而且当我执行z_script时没有设置PYTHONPATH环境变量。

现在我的问题是:

我的设置有什么问题吗?为什么脚本找不到正确的模块?


然而,当我使用 z_script 运行脚本时?通常情况下,您的 PATH 变量首先列出了本地目录,后面是安装的 bin 目录。您可能应该切换到机器上的任何其他目录,以查看是否安装成功。请同时包括 PATH 和 PYTHONPATH 环境变量。请提供实际代码。 - S.Lott
@S.Lott z_script 已成功安装在路径 ~/local/bin 中,并且已添加到 PATH 环境变量中。因此,我可以在计算机的任何位置执行它。而且,我已经发布了所有实际的代码... - Woltan
@S.Lott 命令是 z_script,我可以从机器上的任何位置运行它,因为它通过 PATH 环境变量可访问。当我运行脚本时,我没有设置任何 PYTHONPATH 变量。 - Woltan
请用详细信息更新问题。 - S.Lott
1个回答

5

您不需要通过指令让setuptools安装z_script。可以使用find_packages或将z_script列在py_modules关键字中。

...
packages = find_packages(),
...

或者

...
py_modules = ['z_script'],
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接