gpt4 book ai didi

Python setuptools 将脚本安装到路径

转载 作者:行者123 更新时间:2023-12-01 09:28:03 25 4
gpt4 key购买 nike

我的 Python 模块包含一个外部脚本,用户可以从命令行执行该脚本。我希望用户能够一次性安装 Python 模块和脚本。使用setuptools,我尝试添加:

scripts=['bin/mybin']

这几乎可以达到目的。它没有将 mybin 添加到用户的 PATH,而是添加了一个调用 mybin 的小脚本:

#!/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
# EASY-INSTALL-SCRIPT: 'myscript==2.0.4','mybin'
__requires__ = 'myscript==2.0.4'
__import__('pkg_resources').run_script('myscript==2.0.4', 'mybin')

这种间接寻址会导致一些问题,特别是在执行脚本时出现小延迟(与直接将 mybin 复制到 PATH 相比)。

有没有办法让 setuptools 将脚本直接复制到 PATH,而不是让它间接调用我的脚本?

我的第一个想法是写一个自定义post-install函数将脚本复制到用户的路径。但如果有一种方法可以在 setuptools 中本地执行此操作,我会更喜欢。

最佳答案

一种解决方案是将其添加到您的setup.py中:

  data_files=[
('/usr/local/bin', ['bin/mybin'])
]

bin/mybin 复制到 /usr/local/bin

另一个不需要对 bin 目录进行硬编码的解决方案是首先检测 setuptools 将脚本复制到的脚本目录,然后使用 data_files 复制它直接到那里。 This StackOverflow答案解释了如何检测setuptools脚本路径。

关于Python setuptools 将脚本安装到路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50205026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com