回答:
#!/usr/bin/env python3
を介して正しい完全なバイナリパスが返されますsys.executable
。おそらく、OSまたはPythonのバージョンの動作が少し異なります。
python
とpython3
コマンドで呼び出しましたが、正しい実行可能ファイルが出力されました。
問題のある有用性の別の方法に注意してくださいos.environ
。
import os
python_executable_path = os.environ['_']
例えば
$ python -c "import os; print(os.environ['_'])"
/usr/bin/python
_
シェルで設定されているようです。しかし、設定する必要はないので、これは間違った答えを与える可能性があります。
Linuxで現在使用されているpythonを理解するには、いくつかの代替方法があります。1)which python
コマンド。2)command -v python
コマンド3)type python
コマンド
同様に、Cygwinを使用したWindowsでも同じ結果になります。
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)
すでにPythonシェルを使用している場合。これらのいずれかを試してください。注:これは別の方法です。最高の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'
>>>
>>>
python
シェルから入力した場合に得られるものであると想定しています。明示的な別のパス(例:)で開始するか、それらのpythonコマンドを/opt/python/2.5/bin/python
使用python3
して実行すると、それらすべてが誤った回答を生成し、それが最もpythonicな方法ではないこととは何の関係もありません。
/usr/bin/env python
として実行されているスクリプトからは機能しないようですenv -i ./script
。その場合、現在の作業ディレクトリを返します。