setup.py 和将文件添加到 /bin/
我搞不清楚怎么让 setup.py
把一个脚本添加到用户的 /bin
或 /usr/bin
之类的地方。
比如,我想把 myscript.py
加到 /usr/bin
,这样用户就可以在任何目录下调用 myscript.py
了。
4 个回答
20
要从setuptools和PyPI的基础设施中获得一个可用的命令行工具,有两种方法:
- 使用“scripts”关键字参数
这个方法可以让你在命令行中执行任何你想要的东西,可以是Python脚本、shell脚本,或者其他完全不同的东西。 - 使用“console_scripts”入口点
这个方法允许你直接把Python函数(而不是脚本!)注册为可以在命令行中访问的工具。
78
可以考虑使用 console_scripts
:
from setuptools import setup
setup(name='some-name',
...
entry_points = {
'console_scripts': [
'command-name = package.module:main_func_name',
],
},
)
这里的 main_func_name
是你主模块中的一个主要函数。
command-name 是它在 /usr/local/bin/ 下保存的名字(通常是这样)。
45
Python的官方文档在安装脚本这一部分有解释。
脚本是包含Python源代码的文件,目的是从命令行启动它们。
setup(...,
scripts=['scripts/xmlproc_parse', 'scripts/xmlproc_val']
)
正如这里提到的,除了脚本,还有一种entry_points
机制,这种方式在不同平台上更通用。
使用entry_points
,你可以把命令行工具的名字和你选择的一个函数连接起来,而scripts
则可以指向任何文件(比如一个shell脚本)。