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.