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 python3akan mengembalikan jalur biner penuh yang benar melalui sys.executable. Mungkin versi OS atau Python Anda berperilaku sedikit berbeda.
pythondan python3perintah 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 pythonperintah. 2) command -v pythonperintah 3) type pythonperintah
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'
>>>
>>>
pythondari shell. Jika Anda mulai dengan jalur berbeda yang eksplisit (misalnya /opt/python/2.5/bin/python), atau menggunakan python3dan 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 pythondieksekusi sebagaienv -i ./script. Dalam hal ini mengembalikan direktori kerja saat ini.