Python yorumlayıcısının tam yolunu mu buldunuz?


402

Şu anda çalışan Python yorumlayıcısının tam yolunu, şu anda yürütülen Python betiğinden nasıl bulabilirim?

Yanıtlar:


607

sys.executable şu anda çalışan Python yorumlayıcısının tam yolunu içerir.

import sys

print(sys.executable)

şimdi burada belgeleniyor


1
Bu senaryo /usr/bin/env pythonolarak idam bir shebang ile çalışmak gibi görünmüyor env -i ./script. Bu durumda geçerli çalışma dizinini döndürür.
John Freeman

2
@JohnFreeman: Bunu GNU coreutils 8.4 (env) ve Python 3.4.2 ile bir GNU / Linux kutusunda denedim. #!/usr/bin/env python3ile doğru tam ikili yolu döndürür sys.executable. Belki işletim sisteminiz veya Python sürümünüz biraz farklı davranır.
kevinarpe

25
Python bazı uygulamalara yerleştirilmişse, bunun Python yorumlayıcısının adını döndürmeyeceğini unutmayın.
mic_e

1
Bunu python2 ve python3 için shebang ile denedim ve doğru çalıştırılabilir yazdırdı. Ben de hiçbir shebang ile çalıştı ve pythonve python3komutları ile komut dosyası çağırdı ve doğru yürütülebilir yazdırılır.
David Baucum

8

Şunu kullanarak, sadece farklı bir sorgulanabilir faydaya dikkat edin os.environ:

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

Örneğin

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

2

2
_Kabuk tarafından belirlenmiş gibi görünüyor . Ancak ayarlanması gerekmez, bu yüzden bu yanlış cevap verebilir.
vy32

2
FYI, bir Jupyter not defterinde iken, bu, çekirdek başlatıcı komut dosyasına giden yolu verir.
Bay Fooz

2

Linux'ta şu anda kullanılan python'u anlamanın birkaç alternatif yolu vardır: 1) which pythonkomutu. 2) command -v pythonkomut 3) type pythonkomut

Benzer şekilde Cygwin'li Windows'ta da aynı sonuç elde edilir.

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)

Zaten python kabuğundaysanız. Bunlardan birini deneyin. Not: Bu alternatif bir yoldur. En iyi pitonik yol değil.

>>>
>>> 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
"Şu anda yürütülen Python betiği içinden" OP yazdı
nodakai

3
"Zaten python kabuğunda" örneklerinizin tümü, python kabuğunun başladığını varsayarsak, kabuktan yazdığınızda elde ettiğiniz şeydir python. Belirgin bir farklı yolla (örneğin /opt/python/2.5/bin/python) başlarsanız veya python3bu python komutlarını kullanır ve çalıştırırsanız, hepsi yanlış cevaplar üretti ve bunun en pitonik yol olmamasıyla hiçbir ilgisi yok, sadece yanlış.
Anthon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.