2010-04-07 47 views

回答

337

sys.executable包含当前运行的Python解释器的完整路径。

import sys 

print(sys.executable) 

这是现在documented here

+0

这看起来不像从'env -i。/ script'执行的带有shebang'/ usr/bin/env python'的脚本工作。在这种情况下,它返回当前的工作目录。 – 2015-04-28 21:50:34

+1

@JohnFreeman:我在GNU coreutils 8.4(env)和Python 3.4.2的GNU/Linux框中试过。 '#!/ usr/bin/env python3'会通过'sys.executable'返回正确的完整二进制路径。也许你的操作系统或Python版本的行为稍有不同。 – kevinarpe 2015-05-22 12:56:25

+0

它适用于Python 3,但不适用于Python 2. – 2015-05-26 18:41:21

-1

尝试whereis命令:

whereis python 
+7

这会告诉你什么是你的路径,但它并不告诉你想让程序运行当前的脚本。 – vy32 2013-10-27 22:41:28

+4

而不能移植到某些操作系统,例如Windows – wojtow 2015-11-04 21:36:43

+7

问题是关于“从当前正在执行的Python脚本中......”。 'whereis'不在Python脚本中。 – guettli 2016-05-13 09:05:09

7

只要注意到质疑是否有用的不同的方式,使用os.environ

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

例如

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

无用但有趣:)(也许还不能移动) – eudoxos 2015-08-13 08:46:50

+1

看起来'_'是由shell设置的。但它不需要设置,所以这可能会给出错误的答案。 – vy32 2015-09-23 00:40:49

+0

至少在安装有Anaconda的Windows上不起作用。 “ – 2016-09-03 17:34:32

1

有几种替代方式找出在Linux中当前使用Python是: 1)which python命令。 2)command -v python命令 3)type python命令

同样在Windows使用Cygwin也将导致相同的。

[email protected] ~ 
$ which python 
/usr/bin/python 

[email protected] ~ 
$ 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 

[email protected] ~ 
$ which python3 
/usr/bin/python3 

[email protected] ~ 
$ command -v python 
/usr/bin/python 

[email protected] ~ 
$ type python 
python is hashed (/usr/bin/python) 

如果您已经在python shell中。尝试任何这些。 注意:这是一种替代方法。不是最好的pythonic方式。

>>> 
>>> 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' 
>>> 
>>> 
+3

”在当前正在执行的Python脚本中“写道OP – nodakai 2016-12-12 07:15:10

+0

您已经在”python shell“中的例子中,都假设python shell的启动是从shell中键入'python'时得到的。如果你从一个明确的不同路径开始(例如'/ opt/python/2.5/bin/python'),或者使用'python3'然后运行这些python命令,**所有这些都会产生不正确的答案**,与最不pythonic的方式做,这是明显错误的。 – Anthon 2017-08-24 07:17:43