2010-04-07 22 views

risposta

337

sys.executable contiene il percorso completo dell'interprete Python attualmente in esecuzione.

import sys 

print(sys.executable) 

che ora documented here

+0

Questo non sembra funzionare da script con uno shebang '/ usr/bin/env python' eseguito come' env -i./Script'. In tal caso restituisce la directory di lavoro corrente. –

+1

@JohnFreeman: Ho provato questo su una scatola GNU/Linux con GNU coreutils 8.4 (env) e Python 3.4.2. '#!/usr/bin/env python3' restituirà il percorso binario completo corretto tramite' sys.executable'. Forse la tua versione del sistema operativo o Python si comporta in modo leggermente diverso. – kevinarpe

+0

Funziona per me con Python 3, ma non con Python 2. –

-1

provare il comando whereis:

whereis python 
+7

Questo ti dice cosa c'è nel tuo percorso, ma non ti dice che il programma sta eseguendo lo script corrente. – vy32

+4

e non portabile ad alcuni sistemi operativi, come Windows – wojtow

+7

La domanda riguardava "..dall'interno dello script Python attualmente in esecuzione?". 'whereis' non è all'interno dello script Python. – guettli

7

Appena rilevando un modo diverso di dubbia utilità, utilizzando os.environ:

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

esempio

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

inutile ma divertente :) (forse anche non portatile) – eudoxos

+1

Sembra che '_' sia impostato dalla shell. Ma non ha bisogno di essere impostato, quindi questo potrebbe dare la risposta sbagliata. – vy32

+0

Non funziona, almeno su Windows con Anaconda. –

1

Ci sono alcuni modi alternativi per capire il pitone attualmente in uso in Linux è: 1) which python comando. 2) command -v python comando 3) type python comando

Allo stesso modo su Windows con Cygwin comporterà anche lo stesso.

[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) 

Se si è già nella shell python. Prova qualcuno di questi. Nota: questo è un modo alternativo. Non il miglior modo pitone.

>>> 
>>> 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

"dallo script Python attualmente in esecuzione" ha scritto l'OP – nodakai

+0

gli esempi "già nella shell python", tutti presuppongono che la shell python avviata sia quella che si ottiene se si digita 'python' dalla shell. Se inizi con un percorso esplicito diverso (ad esempio '/ opt/python/2.5/bin/python'), o usi' python3' e poi esegui quei comandi python, ** tutti producono risposte errate ** e che non ha nulla a che fare con non essere il modo più pitonioso, è semplicemente sbagliato. – Anthon

Problemi correlati