查找Python解释器的完整路径(Python可执行文件)?

644 投票
3 回答
483786 浏览
提问于 2025-04-15 21:19

我怎么才能从正在执行的Python脚本中找到当前运行的Python解释器的完整路径呢?


如果你特别想知道当前运行的解释器的版本,可以查看这个链接:我怎么检查哪个版本的Python在运行我的脚本?。比如说,如果你的脚本不支持某个Python版本,你可以在这里提前报错,或者根据不同的版本来决定是否禁用某些模块或代码路径。

3 个回答

2

在Linux系统中,有几种方法可以找出当前使用的Python版本:

  1. 可以用命令 which python
  2. 也可以用命令 command -v python
  3. 还有命令 type python

在Windows系统中,如果使用Cygwin,这些方法也能得到相同的结果。

kuvivek@HOSTNAME ~
$ which python
/usr/bin/python

kuvivek@HOSTNAME ~
$ whereis python
python: /usr/bin/python /usr/bin/python3.4 /usr/lib/python2.7 /usr/lib/python3.4        /usr/include/python2.7 /usr/include/python3.4m /usr/share/man/man1/python.1.gz

kuvivek@HOSTNAME ~
$ which python3
/usr/bin/python3

kuvivek@HOSTNAME ~
$ command -v python
/usr/bin/python

kuvivek@HOSTNAME ~
$ type python
python is hashed (/usr/bin/python)

如果你已经在Python的命令行界面里,可以试试以上任何一个命令。注意:这只是另一种方法,并不是最推荐的Python使用方式。

>>> import os
>>> os.popen('which python').read()
'/usr/bin/python\n'
>>>
>>> os.popen('type python').read()
'python is /usr/bin/python\n'
>>>
>>> os.popen('command -v python').read()
'/usr/bin/python\n'
>>>
>>>

如果你不确定Python命令的实际路径,或者你的系统里是否有Python,可以使用以下命令。

pi@osboxes:~ $ which python
/usr/bin/python
pi@osboxes:~ $ readlink -f $(which python)
/usr/bin/python2.7
pi@osboxes:~ $ 
pi@osboxes:~ $ which python3
/usr/bin/python3
pi@osboxes:~ $ 
pi@osboxes:~ $ readlink -f $(which python3)
/usr/bin/python3.7
pi@osboxes:~ $ 
14

这里提到了一种可能不太实用的不同方法,使用的是 os.environ

import os
python_executable_path = os.environ['_']

例如:

$ python -c "import os; print(os.environ['_'])"
/usr/bin/python
969

sys.executable 是一个包含当前正在运行的 Python 解释器的完整路径的变量。

import sys

print(sys.executable)

这个内容现在可以在这里找到详细说明

撰写回答