Pythonインタープリターの完全なパスを見つけますか?


402

現在実行中のPythonスクリプト内から現在実行中のPythonインタープリターの完全なパスを見つけるにはどうすればよいですか?

回答:


607

sys.executable 現在実行中のPythonインタープリターの絶対パスが含まれています。

import sys

print(sys.executable)

これは今ここに文書化されています


1
これは、シバンが/usr/bin/env pythonとして実行されているスクリプトからは機能しないようですenv -i ./script。その場合、現在の作業ディレクトリを返します。
John Freeman、

2
@JohnFreeman:私はこれをGNU coreLinux 8.4(env)とPython 3.4.2を含むGNU / Linuxボックスで試しました。 #!/usr/bin/env python3を介して正しい完全なバイナリパスが返されますsys.executable。おそらく、OSまたはPythonのバージョンの動作が少し異なります。
kevinarpe

25
Pythonが一部のアプリケーションに埋め込まれている場合、これはPythonインタープリターの名前を返さないことに注意してください。
mic_e 2015

1
私はpython2とpython3のシバンでこれを試しました、そしてそれは正しい実行可能ファイルを印刷しました。私もシバンなしで試して、スクリプトをpythonpython3コマンドで呼び出しましたが、正しい実行可能ファイルが出力されました。
David Baucum、

8

問題のある有用性の別の方法に注意してくださいos.environ

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

例えば

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

2
役に立たないがおもしろい:)(おそらく移植もできない)
eudoxos '13

2
_シェルで設定されているようです。しかし、設定する必要はないので、これは間違った答えを与える可能性があります。
vy32 2015

2
参考までに、Jupyterノートブックでは、これはカーネルランチャースクリプトへのパスを提供します。
Fooz氏、18

2

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

5
「現在実行中のPythonスクリプト内から」がOPを書いた
nodakai

3
「Pythonシェルですでに」の例では、すべて、開始されたPythonシェルがpythonシェルから入力した場合に得られるものであると想定しています。明示的な別のパス(例:)で開始するか、それらのpythonコマンドを/opt/python/2.5/bin/python使用python3して実行すると、それらすべてが誤った回答生成し、それが最もpythonicな方法ではないこととは何の関係もありません。
Anthon 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.