2010-04-07 27 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