在python模块使用的setup.py中包含'helper'shell脚本的最佳方法是什么?我不希望将is包含为脚本,因为它不是自己运行的。
此外,data_files只是复制安装路径中的内容(而不是模块安装路径),因此这看起来并不是最佳路径。
我想问题是:有没有办法在python distutils包中以通用方式包含非python(非C)脚本/二进制文件?
答案 0 :(得分:2)
将它包含在MANIFEST.in中,如下所示:
include mycode/myscript.sh
这是一个使用帮助程序脚本的示例Python包:
https://github.com/pminkov/kubeutils
看看这个文件,它运行shell脚本: https://github.com/pminkov/kubeutils/blob/master/kubeutils/kutils.py
答案 1 :(得分:1)
我认为没有办法打包shell脚本。
对于我的一个项目,我特别需要一个shell脚本作为参数通过子进程传递给另一个工具,只有shell脚本,而不是python脚本。
所以我最终通过让python在运行中写出myscript.sh来破解它。
看起来像这样:
bash_script_name = cwd + "/myscript.sh"
bash_script_file_obj = open(bash_script_name, 'w')
bash_script_file_obj.write(text_of_myscript)
bash_script_file_obj.close()
os.chmod(bash_script_name, 0755)
subprocess.call([another_tool, bash_script_name])
os.remove(bash_script_name)
它不是很优雅,但它有效。如果你可以选择用Python编写脚本,我肯定会选择。
答案 2 :(得分:0)
另一个问题可能是包含Bash脚本的此类pypi包可能无法正常运行,例如:视窗?