PYTHONPATH पर्यावरण चर


19

मेरे पास यह है ~/.profile:

export PYTHONPATH=/home/dev/python-files

में python-filesनिर्देशिका, मैं Git हब (फ्लास्क, curveship और py-vgdl) से क्लोन कुछ परियोजनाएं हैं।

जब भी मैं इन परियोजनाओं में किसी भी उदाहरण को शुरू करने की कोशिश करता हूं, मुझे निम्न के समान त्रुटियां मिलती हैं:

$ python ~/python-files/py-vgdl/examples/gridphysics/frogs.py 
Traceback (most recent call last):
    File "/home/dev/python-files/py-vgdl/examples/gridphysics/frogs.py", line 67, in <module>
        from vgdl.core import VGDLParser
ImportError: No module named vgdl.core

ऐसा लगता है कि मुझे यह त्रुटि नहीं मिलनी चाहिए क्योंकि मेरे पास वह PYTHONPATHपर्यावरण चर है?

अजगर इंटरएक्टिव दुभाषिया चल रहा है:

>>> import os
>>> os.environ["PYTHONPATH"]
'/home/dev/python-files'

जवाबों:


35

इसे पूरी तरह से अधिलेखित करने के बजाय PYTHONPATH से जोड़ने की कोशिश करें।

export PYTHONPATH=$PYTHONPATH:/home/dev/python-files

संदर्भ:

PYTHONPATH पर पायथन प्रलेखन के अनुसार

मॉड्यूल फ़ाइलों के लिए डिफ़ॉल्ट खोज पथ को संवर्धित करें। [...]

डिफ़ॉल्ट खोज पथ स्थापना निर्भर है, लेकिन आम तौर पर इसके साथ शुरू होता है prefix/lib/pythonversion( PYTHONHOMEऊपर देखें )। इसे हमेशा जोड़ा जाता है PYTHONPATH

इसका अर्थ है कि कुछ मान मौजूद हैं PYTHONPATHऔर डिफ़ॉल्ट खोज पथ भी केवल संलग्न है।

इसके अतिरिक्त, यह ब्लॉग पोस्ट ( Archive.org लिंक ) यह भी स्पष्ट रूप से बताता है कि आपको PYTHONPATHइसे अधिलेखित करने की आवश्यकता क्यों है। अनुभाग तक स्क्रॉल करना - विशेष मामले और खोज पथ की जांच करना यह स्पष्ट रूप से बताता है (दुर्भाग्य से उस लिंक का कोई भी सापेक्ष URL नहीं है, इसलिए आपको स्क्रॉल करना होगा)। हालांकि उपयोगकर्ता एक मैक पर उदाहरण देता है कि वे किसी भी मंच के लिए बहुत अधिक प्रासंगिक हैं


1
@ ग्रेट थैंक्स :) Archive.org लिंक के साथ अपडेट किया गया।
नितिन वेंकटेश

संग्रह / स्टीरियो लिंक के लिए +1। यह इतने सारे सवालों के जवाब देता है कि यह आधिकारिक पायथन डॉक्स के पहले पन्ने पर होना चाहिए!
मलिक ए। रूमी

5

आप निम्न कार्य भी कर सकते हैं:

export PYTHONPATH=$(pwd) **or** export PYTHONPATH=${PWD}

pwd वर्तमान वर्किंग डायरेक्टरी है।


खबरदार, यह इस प्रक्रिया में आपके PYTHONPATH को अधिलेखित कर देगा! यदि आप अपने PYTHONPATH में pwd जोड़ना चाहते हैं:export PYTHONPATH=$PYTHONPATH:$(pwd)
jackw11111

4

PYTHONPATHइंगित करें कि आपके पायथन पैकेज और मॉड्यूल कहां हैं, न कि आपके चेकआउट कहां हैं। दूसरे शब्दों में, यदि आप करते हैं तो आपको फाइलें ( पायथन मॉड्यूल ) और फाइलों ( पायथन पैकेज ) वाली निर्देशिकाओं ls "$PYTHONPATH"को देखना चाहिए ।*.py__init__.py

इसलिए, यदि आप में सक्षम करने के लिए होना चाहता हूँ import vgdl, अपने PYTHONPATHइस तरह दिखना चाहिए:

PYTHONPATH=/home/dev/python-files/py-vgdl

क्योंकि vgdl पैकेज अंदर है py-vgdl, अंदर नहीं python-files

अन्य रास्तों को भी जोड़ने के लिए, आप :उन्हें अलग करने के लिए उपयोग कर सकते हैं:

PYTHONPATH="/home/dev/python-files/py-vgdl:/home/dev/python-files/something:$PYTHONPATH"

यह वास्तव में काम करेगा, हालांकि, ऐसे मामलों के लिए, उपयोग PYTHONPATHकरना बहुत जटिल हो सकता है। मैं virtualenvजो उपयोग करने की सलाह देता हूं , वह आपकी जैसी स्थितियों को सरल बनाने के उद्देश्य से बनाया गया है। आपको मूल रूप से क्या करना है:

  1. एक वातावरण बनाएँ: virtualenv env
  2. इसे सक्रिय करें: source env/bin/activate
  3. अपने पैकेजों को स्थापित करें: यह या तो आपके पैकेजों pipकी setup.pyस्क्रिप्ट का उपयोग करके किया जा सकता है ।
  4. का आनंद लें।

मैं बहुत जानकारी नहीं दे रहा हूं क्योंकि virtualenv अच्छी तरह से प्रलेखित है और अगर आपको किसी चीज़ की मदद की ज़रूरत है, तो आप एक नया प्रश्न खोलेंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.