3

What is the best way to include a 'helper' shell script in setup.py that is used by a python module? I don't want to include is as a script since it is not run on it's own.

Also, data_files just copies things in the the install path (not the module install path) so that does not really seem like the best route.

I guess the question is: is there a way of including non-python (non-C) scripts/binaries in a python distutils package in a generic way?

4

3 回答 3

3

将其包含在 MANIFEST.in 中,如下所示:

include mycode/myscript.sh

这是一个使用帮助脚本的示例 Python 包:

https://github.com/pminkov/kubeutils

看看这个文件,它运行 shell 脚本: https ://github.com/pminkov/kubeutils/blob/master/kubeutils/kutils.py

于 2017-07-10T23:21:54.063 回答
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 编写脚本,我肯定会这样做。

于 2013-10-04T18:31:18.013 回答
0

另一个问题可能是包含 Bash 脚本的此类 pypi 包可能无法在例如 Windows 上正确运行?

于 2017-12-14T23:32:57.150 回答