使用Setuptools设置entry_points
我想用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
环境变量。
现在我想问的是:
我的设置哪里出了问题?为什么脚本找不到正确的模块?
1 个回答
5
你没有告诉setuptools去安装z_script
。你可以使用find_packages
这个方法,或者把z_script
放在py_modules
这个关键词里。
...
packages = find_packages(),
...
或者
...
py_modules = ['z_script'],
...