Відповіді:
sys.executable
містить повний шлях поточного інтерпретатора Python.
import sys
print(sys.executable)
що зараз тут задокументовано
#!/usr/bin/env python3
поверне правильний повний бінарний шлях через sys.executable
. Можливо, ваша ОС чи версія Python поводяться дещо інакше.
python
і python3
командами , і він надрукував правильний виконуваний файл.
Просто зазначивши інший спосіб сумнівної корисності, використовуючи os.environ
:
import os
python_executable_path = os.environ['_']
напр
$ python -c "import os; print(os.environ['_'])"
/usr/bin/python
_
встановлена оболонка. Але його не потрібно встановлювати, тому це може дати неправильну відповідь.
Існує кілька альтернативних способів з'ясувати поточно використаний python в Linux: 1) which python
команда. 2) command -v python
команда 3) type python
команда
Так само в Windows з Cygwin також вийде те саме.
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)
Якщо ви вже в оболонці пітона. Спробуйте будь-кого із них. Примітка. Це альтернативний спосіб. Не найкращий пітонічний спосіб.
>>>
>>> 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
з оболонки. Якщо ви починаєте з явного іншого шляху (наприклад /opt/python/2.5/bin/python
), або використовуєте, python3
а потім запускаєте ці команди python, всі вони давали неправильні відповіді, і це не має нічого спільного з тим, що це не самий пітонічний спосіб, це просто неправильно.
/usr/bin/env python
виконаними як шебанг якenv -i ./script
. У такому випадку він повертає поточний робочий каталог.