पायथन दुभाषिया का पूरा रास्ता खोजें?


402

मैं वर्तमान में निष्पादित पायथन स्क्रिप्ट के भीतर से वर्तमान में चल रहे पायथन दुभाषिया का पूरा मार्ग कैसे खोज सकता हूँ?

जवाबों:


607

sys.executable वर्तमान में चल रहे पायथन दुभाषिया का पूरा रास्ता शामिल है।

import sys

print(sys.executable)

जो अब यहाँ प्रलेखित है


1
ऐसा लगता है कि स्क्रिप्ट के साथ काम करने के लिए नहीं लगता है जैसा कि एक शबंग /usr/bin/env pythonनिष्पादित किया गया है env -i ./script। उस स्थिति में यह वर्तमान कार्यशील निर्देशिका को लौटाता है।
जॉन फ्रीमैन

2
@ जॉनफरमैन: मैंने एक जीएनयू / लिनक्स बॉक्स डब्ल्यू / जीएनयू कोरुटिल्स 8.4 (एनवी) और पायथन 3.4.2 पर यह कोशिश की। #!/usr/bin/env python3के माध्यम से सही पूर्ण बाइनरी पथ लौटाएगा sys.executable। शायद आपका ओएस या पायथन संस्करण थोड़ा अलग तरीके से व्यवहार करता है।
केविनरपे

25
ध्यान दें कि यह पायथन इंटरप्रेटर का नाम नहीं लौटाएगा यदि पायथन कुछ एप्लिकेशन में एम्बेडेड है।
mic_e

1
मैंने इसे python2 और python3 के लिए शेबंग के साथ आज़माया और इसने सही निष्पादन योग्य छाप दिया। मैं भी कोई मामला साथ की कोशिश की और साथ स्क्रिप्ट कहा जाता है pythonऔर python3आदेशों और यह सही निष्पादन छपी।
डेविड बॉउम

8

बस का उपयोग कर, संदिग्ध उपयोगिता का एक अलग तरीका नोट कर रहा है os.environ:

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

जैसे

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

2
बेकार लेकिन मजाकिया :) (शायद पोर्टेबल भी नहीं)
यूडॉक्सोस

2
ऐसा लगता है कि _शेल द्वारा सेट किया गया है। लेकिन इसे सेट करने की आवश्यकता नहीं है, इसलिए यह गलत उत्तर दे सकता है।
vy32

2
FYI करें, जब जुपिटर नोटबुक में, यह कर्नेल लॉन्चर स्क्रिप्ट को रास्ता देता है।
श्री फूज

2

लिनक्स में वर्तमान में प्रयुक्त अजगर का पता लगाने के लिए कुछ वैकल्पिक तरीके हैं: 1) which pythonकमांड। 2) command -v pythonकमांड 3) type pythonकमांड

इसी तरह विंडोज पर सिग्विन के साथ भी परिणाम होगा।

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

5
"वर्तमान में निष्पादित पायथन लिपि के भीतर से" ने ओपी
नोडाकाई

3
आपके "पहले से ही अजगर के खोल" उदाहरण में, सभी मानते हैं कि अजगर खोल शुरू हो गया है जो आपको pythonशेल से टाइप करने पर मिलता है । यदि आप एक स्पष्ट भिन्न पथ (जैसे /opt/python/2.5/bin/python) से शुरू करते हैं , या उपयोग करते हैं python3और फिर उन अजगर कमांडों को चलाते हैं, तो उन सभी ने गलत उत्तर दिए हैं और इसका सबसे अधिक पायथोनिक तरीका नहीं होने से कोई लेना-देना नहीं है, यह सिर्फ सादा गलत है।
एंथन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.