我创建了一个包,我将在整个公司分发,用相同的名称替换旧的bash脚本。它被引用很多地方所以它需要像当前脚本那样执行。这个工作正常,直到我遇到一些没有当前版本的Python作为默认Python(又名CentOS)的服务器。
有没有办法在setup.py中指定在脚本文件顶部创建什么shebang行?即我需要#!/opt/bin/python
而不是#!/usr/bin/env python
。
答案 0 :(得分:2)
/opt/bin/python script.py
或#!/opt/bin/python
或/opt/bin
之前将/usr/bin
放在您的路径中。答案 1 :(得分:1)
首先要了解为什么需要shebang -
使用shebang可以让系统知道用于运行脚本的命令。
这是什么意思?
这意味着你只需在终端中执行这样的脚本 -
$ ./script.py
“script.py”作为您在命令行中提到的命令的参数。
所以,如果shebang指向python解释器,上面的命令将等同于此 -
$ python script.py
所以现在你可以理解shebang的目的 - 它只是给出了脚本解释器的路径。 (在你的情况下,是python解释器)。
请注意,如果您执行这样的脚本,那么shebang毫无意义 -
$ python script.py
(这是因为你正在调用python可执行文件并将script.py作为第一个参数传递,它只是忽略第一行,因为它是对它的注释。)
所以,现在来解决你的问题 -
如果你有两个python安装,并且你想使用非默认的python安装来执行你的脚本,你要做的是 -
1.简单地执行$ /opt/bin/python script.py
并忽略shebang
OR
2.更改script.py
的shebang,然后您可以执行./script.py
如果我必须只运行script.py
一次,我会选择第一个选项,如果我必须执行多次,我会选择第二个选项(所以我不会浪费时间每次都写/opt/bin/python
)
答案 2 :(得分:0)
Keith回答了我的问题的答案。将setup.py作为/opt/bin/python setup.py install
运行会产生我需要的结果而无需任何用户干预。