Python setup.py并将文件添加到/bin/
我不知道如何使Python setup.py并将文件添加到/bin/,python,Python,我不知道如何使setup.py向用户的/bin或/usr/bin或任何东西添加纸条 例如,我想在/usr/bin中添加一个myscript.py,这样用户就可以从任何目录调用myscript.py。Python文档在本节中对此进行了解释 脚本是包含Python源代码的文件,打算从命令行启动 如前所述,除了脚本之外,还有一种机制,更具跨平台性 使用entry\u points可以将命令行工具名与您选择的函数连接起来,而scripts可以指向任何文件(例如shell脚本)。如果您愿意构建和安装整个p
setup.py
向用户的/bin
或/usr/bin
或任何东西添加纸条
例如,我想在
/usr/bin
中添加一个myscript.py
,这样用户就可以从任何目录调用myscript.py
。Python文档在本节中对此进行了解释
脚本是包含Python源代码的文件,打算从命令行启动
如前所述,除了脚本之外,还有一种机制,更具跨平台性
使用
entry\u points
可以将命令行工具名与您选择的函数连接起来,而scripts
可以指向任何文件(例如shell脚本)。如果您愿意构建和安装整个python包,我会这样做:
- 编辑setup.py中的setup()函数以包含名为scripts的参数,并将其参数设置为希望从任何位置运行的文件的位置。e、 g
setup(name='myproject',author='',author\u email='',scripts=['bin/myscript.py'])
- 在包含setup.py的目录中,通过键入
mkdir-bin
- 将myscript.py添加到这个新创建的
目录中(并确保它是可执行的!)bin
再次放入包含setup.py的目录中,然后通过键入cd
python setup.py install
- 安装包后,您应该能够从系统上的任何位置运行myscript.py李>
- 考虑使用
:控制台脚本
其中,from setuptools import setup setup(name='some-name', ... entry_points = { 'console_scripts': [ 'command-name = package.module:main_func_name', ], }, )
是主模块中的主要函数。main\u func\u name
命令名是将其保存在/usr/local/bin/(通常)中的名称。要从setuptools和PyPI基础结构中获取有效的命令行工具,有两种方法: -
这允许命令行执行您想要的一切,它可以是Python脚本、shell脚本或完全不同的东西 -
这允许Python函数(而不是脚本!)直接注册为命令行可访问工具
这似乎将文件放入Python
bin
目录(在我的Mac上/opt/local/Library/Frameworks/Python.framework/Versions/3.1/bin/
),但我仍然无法运行它们。aharon,根据您安装3.1的方式,您可能必须更改路径,才能使bin目录中的脚本正常运行。请参阅前一个问题,以获取有关如何执行此操作的说明。这同样适用于非Python脚本的脚本。不幸的是,如果bin目录中也列出了普通数据文件,那么它也会将其视为可执行文件?顺便说一句,在bin目录中添加源代码的实践有些困难questionable@DataGreed如果要忽略.py扩展名…忽略它:),只要文件是可执行的,就可以忽略扩展名,您只需从命令行运行myscript
。请原谅我的天真,但是为什么在bin目录中添加源代码是有问题的呢?这是一个非常奇怪的决定。Bin应该包含生成,而不是源。请重试。默认情况下,python setup.py install
将我的_项目安装到/usr/local/bin
中。要删除安装,请运行python setup.py install--record files.txt
,它会生成files.txt,然后通过rm
删除这些路径。唉,第一种方法会将可能具有“.py”扩展名的脚本放入bin目录,并且(我认为)不会针对virtualenvs进行调整。U-G-L-Y。最好使用控制台_脚本。@Chris Cogdon,.py扩展名是不必要的,至少对于*nix系统是不必要的(我确实在文件顶部有一个shebang)。关于虚拟环境性能不佳的说法是对的——您必须转到环境的bin目录才能找到可执行文件。但是您可以从那里运行它。如果您运行的是pip3 install--editable.
它将安装到命令/home/{username}/.local/bin
。如果您运行sudopip3 install--editable.
它会将命令安装到Mac上的/usr/local/bin/
,这也会安装到framework dir中(/Library/Frameworks/Python.framework/Versions/3.7/bin
对于我),但不在/usr
下(其中mypip
和Python
是
from setuptools import setup
setup(name='some-name',
...
entry_points = {
'console_scripts': [
'command-name = package.module:main_func_name',
],
},
)