工具启动 Python 脚本中的 shebang 来自哪里?

oro*_*ome 5 python pip shebang package

几个广泛使用的 Python 工具 \xe2\x80\x94 例如pip和\xe2\x80\x94 由脚本启动,并使用shebang指定应使用哪个 Python 实例来运行它们yolk。这一行的内容是如何确定的?ipython

\n\n
\n\n

例如,在 OS X 机器上,我一直在使用 Apple 的 Python,这一行显示

\n\n
#!/usr/bin/python\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我安装了 python.org 版本,它位于

\n\n
/Library/Frameworks/Python.framework/Versions/2.7/python \n
Run Code Online (Sandbox Code Playgroud)\n\n

带有符号链接

\n\n
/usr/local/bin/python\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后更新或重新安装工具?如果我更新了工具,线路会改变吗?我是否必须完全重新安装(而不是简单地更新)每个工具才能强制进行更改?这条线会变成什么?可不可能是

\n\n
#!/usr/local/bin\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
#!/Library/Frameworks/Python.framework/Versions/2.7\n
Run Code Online (Sandbox Code Playgroud)\n\n

有没有办法做到

\n\n
#!/usr/bin/env python\n
Run Code Online (Sandbox Code Playgroud)\n

Mar*_*ers 3

该线来自sys.executablevalue

如果您对 python 可执行文件进行符号链接,并从该符号链接运行 Python,sys.executable则将使用新路径。更新或重新安装该工具将反映更改后的可执行路径,是的。

我不知道有什么方法可以制作pip,朋友们可以使用#!/usr/bin/env python。这确实是一个坏主意,因为这会让始终使用正确的 Python 变得更加困难,而运行命令行脚本需要找到已安装的软件包。