如何在Unix系统中查找Python的位置?

15

我正在为新的工作场所开发一个新服务器,试图重用我今年早些时候编写的一个Python CGI脚本。我的CGI脚本以以下方式开始:

#!/local/usr/bin/python

但是当我在新服务器上运行它时,它会抱怨说没有这样的文件夹。 显然,Python在这个机器上被保存在不同的位置,但我不知道在哪里。

我之前并没有做过很多Unix,只是足够用来应对一些问题。所以如果这里有什么我应该知道的巧妙技巧,我会很感激的:)

谢谢!


2
你可能想在unix.stackexchange.com上提出这些问题。在这里也可以,但unix是这些特定的非完全编程但与编程相关的问题的好地方。 - Falmarri
6个回答

30

尝试:

which python

在终端中运行。


这不是一个更简单和更准确的回答吗? - Sreejith Menon

9
出于这个原因,建议您将shebang行更改为更加路径无关的形式:
#!/usr/bin/env python

请参考此邮件列表信息:http://mail.python.org/pipermail/tutor/2007-June/054816.html 考虑到在不同的机器上,Python 可能安装在 /usr/bin/python/bin/python,这种情况下,#!/usr/local/bin/python 将会失败。为了解决这个问题,我们需要使用 env 命令来确定 Python 解释器的路径,并正确地使用它。通过在 $PATH 中搜索,我们可以找到 env 命令所在的路径。(env 命令几乎总是位于 /usr/bin/ 目录下,因此不必担心 env 命令不存在于 /usr/bin 目录下。)

即使在同一台机器上,使用 virtualenv 时,解释器路径也会发生变化。 - Petr Viktorin

4
# which python
/usr/local/bin/python

更新:

我看错了。请用以下代码替换您的标题:

#!/usr/bin/env python

这将从运行脚本的用户的环境设置中获取Python位置。


4

Try: which python or whereis python


3

在编写Python脚本的标题时,使用反引号是一个好的想法:

`which python`

1

解决这个问题的正确方法是使用

#!/usr/bin/env python

这允许在shebang中使用PATH中的二进制文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接