Jawaban:
sys.executable
berisi path lengkap dari interpreter Python yang sedang berjalan.
import sys
print(sys.executable)
yang sekarang didokumentasikan di sini
#!/usr/bin/env python3
akan mengembalikan jalur biner penuh yang benar melalui sys.executable
. Mungkin versi OS atau Python Anda berperilaku sedikit berbeda.
python
dan python3
perintah dan itu mencetak executable yang benar.
Hanya memperhatikan cara lain dari kegunaan yang dipertanyakan, menggunakan os.environ
:
import os
python_executable_path = os.environ['_']
misalnya
$ python -c "import os; print(os.environ['_'])"
/usr/bin/python
_
diatur oleh shell. Tapi itu tidak perlu diatur, jadi ini bisa memberikan jawaban yang salah.
Ada beberapa cara alternatif untuk mengetahui python yang saat ini digunakan di Linux adalah: 1) which python
perintah. 2) command -v python
perintah 3) type python
perintah
Demikian pula pada Windows dengan Cygwin juga akan menghasilkan hal yang sama.
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)
Jika Anda sudah berada di shell python. Coba salah satu dari ini. Catatan: Ini adalah cara alternatif. Bukan cara pythonic terbaik.
>>>
>>> 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
dari shell. Jika Anda mulai dengan jalur berbeda yang eksplisit (misalnya /opt/python/2.5/bin/python
), atau menggunakan python3
dan kemudian menjalankan perintah python itu, semuanya menghasilkan jawaban yang salah dan itu tidak ada hubungannya dengan tidak menjadi cara yang paling pythonic, itu jelas salah.
/usr/bin/env python
dieksekusi sebagaienv -i ./script
. Dalam hal ini mengembalikan direktori kerja saat ini.