आप पहले से ही बनाए गए virtualenv में अपने pythonpath को कैसे सेट करते हैं?


106

मैं किस फ़ाइल को संपादित करता हूं, और कैसे? मैंने एक आभासी वातावरण बनाया।


जांचें कि यह सही निर्देशिकाओं को इंगित करता है। यदि आपके पास पहले से कोई नहीं है, तो नया बटन पर क्लिक करें और इसे बनाएं।

11
Add2virtualenv कमांड का उपयोग करें ।
s29

5
add2virtualenv एक virtualenvwrapperकमांड है। इसका हिस्सा नहीं है virtualenv
कोजिरो

जवाबों:


124

EDIT # 2

सही उत्तर @ arogachev का है


यदि आप PYTHONPATHकिसी virtualenv में उपयोग किए गए को बदलना चाहते हैं , तो आप अपने virtualenv की bin/activateफ़ाइल में निम्न पंक्ति जोड़ सकते हैं :

export PYTHONPATH="/the/path/you/want"

इस तरह, PYTHONPATHजब आप इस virtualenv का उपयोग करेंगे तो हर बार नया सेट किया जाएगा।

EDIT: (रामराचम की टिप्पणी का जवाब देने के लिए)

इसे अपने मूल मूल्य पर पुनर्स्थापित करने के लिए deactivate, आप जोड़ सकते हैं

export OLD_PYTHONPATH="$PYTHONPATH"

पहले उल्लिखित लाइन से पहले, और अपनी bin/postdeactivateस्क्रिप्ट में निम्न पंक्ति जोड़ें ।

export PYTHONPATH="$OLD_PYTHONPATH"

1
क्या इसे भी हटाया जाएगा deactivate?
राम रचूम

1
तो इसका मतलब यह है कि एक नए बनाए गए वर्चुअल एनवायरनमेंन्ट को वर्चुअन PYTHONPATHलोकल पाथ के बजाय डिफॉल्ट (ग्लोबल वन) है?
डुकिन

6
यह मेरे लिए बहुत अच्छा काम करता है, मैं virtualenvwrapper का उपयोग नहीं कर रहा हूं। केवल ध्यान दें कि मेरे पास इस तरह की बिन / पोस्टएक्टिवेट स्क्रिप्ट नहीं थी, राथेरे एक्टिवेट में एक निष्क्रिय कार्य था। इस प्रकार कोड की पंक्ति को वहां रखा जाना चाहिए, ताकि इसे एक स्टेटमेंट में लपेटा जा सके क्योंकि यह फ़ंक्शन के बाकी संचालन के रूप में है।
निकोलो

2
यह अजीब लगता है कि virtualenv डिफ़ॉल्ट रूप से ऐसा नहीं करता है।
सेठ

2
# 2 संपादित एक झूठ है! :) सही उत्तर है @ arjen-p-de-vries's
Berriel

73

@ S29 की टिप्पणी का उत्तर होना चाहिए:

वर्चुअल वातावरण में डायरेक्टरी को जोड़ने का एक तरीका यह है कि virtualenvwrapper स्थापित किया जाए (जो कई चीजों के लिए उपयोगी है) और फिर करें

mkvirtualenv myenv
workon myenv
add2virtualenv . #for current directory
add2virtualenv ~/my/path

यदि आप इन पथ को हटाना चाहते हैं तो फ़ाइल को संपादित करें myenvhomedir/lib/python2.7/site-packages/_virtualenv_path_extensions.pth

Virtualenvwrapper पर दस्तावेज़ http://virtualenvwrapper.readthedocs.org/en/latest/ पर देखे जा सकते हैं

इस सुविधा के विशिष्ट दस्तावेज http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html?highlight=add2virtualenv पर देखे जा सकते हैं


6
निकालने के लिए:add2virtualenv -d
Thecheech

1
बस इस जवाब को खान में जोड़ा, क्योंकि यह कहीं बेहतर है
mdeous

27

आप एक .pthफ़ाइल बना सकते हैं जिसमें निर्देशिका खोजने के लिए है, और इसे site-packagesनिर्देशिका में रखें। उदाहरण के लिए:

cd $(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")
echo /some/library/path > some-library.pth

प्रभाव जोड़ने के /some/library/pathलिए समान है sys.path, और virtualenvसेटअप में स्थानीय रहता है ।


7
मुझे वास्तव में यह दृष्टिकोण पसंद है; सक्रिय / निष्क्रिय करने के लिए लाइनों को जोड़ने के रूप में लगभग चंचल नहीं है और virtualenvwrapper का उपयोग करने की आवश्यकता नहीं है। यदि आप साइट-पैकेज डीआईआर को खोजने के लिए अजगर को आमंत्रित नहीं करते हैं, तो यह काफी-पूर्वानुमान योग्य मार्ग पर है $VIRTUALENV_ROOT/lib/pythonX.Y/site-packages। डॉक्स पर .pth फ़ाइलें: docs.python.org/3.6/library/site.html
एलेक

2
मैं एक पूर्ण पथ में टाइप नहीं करना चाहता था, क्योंकि मेरे कार्यस्थान मेरे फाइल सिस्टम के चारों ओर चलते हैं। और, मेरे प्रोजेक्ट पथ में रिक्त स्थान हैं। इसलिए, मैंने थोड़ा संशोधित कमांड टाइप किया: pushd "$(venv/bin/python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")" ...path/to/project/venv/lib/python3.7/site-packages ...path/to/project echo ../../../../src > my_project.pth popdफिर मैंने अपना वर्चुअलाइजेशन निष्क्रिय कर दिया, और फिर से सक्रिय हो गया। अब मैं प्रोजेक्ट कोड चला सकता हूं, जिसमें यह जानना आवश्यक है कि मेरी परियोजना निर्देशिका कहां थी।
जिम डिलाउंट

4
यह सही जवाब है। विक्रेता-प्रदत्त स्क्रिप्ट को संशोधित करना ( /bin/activate) एक कदाचार है और 3 पार्टी उपकरण स्थापित करना उसी को प्राप्त करने के लिए अंतर्निहित तरीके का उपयोग करने से हीन है।
रेड

2
  1. अपने virtualenv को प्रारंभ करें
cd venv

source bin/activate
  1. बस निम्नलिखित आदेश दर्ज करके अपने अजगर पथ को सेट या बदलें:
export PYTHONPATH='/home/django/srmvenv/lib/python3.4'
  1. अजगर पथ की जाँच करने के लिए अजगर में प्रवेश करें:
   python

      \>\> import sys

      \>\> sys.path

1

मैंने अपनी सक्रिय स्क्रिप्ट को फ़ाइल को स्रोत में बदलने के लिए संशोधित किया है .virtualenvrc, अगर यह वर्तमान निर्देशिका में मौजूद है, और PYTHONPATHसक्रिय / निष्क्रिय करने के लिए सहेजने / पुनर्स्थापित करने के लिए ।

आप activateयहां पटकथा लिख सकते हैं । । यह virtualenv 1.11.6 द्वारा बनाई गई सक्रिय स्क्रिप्ट के लिए एक ड्रॉप-इन प्रतिस्थापन है।

फिर मैंने अपने साथ कुछ ऐसा जोड़ा .virtualenvrc:

export PYTHONPATH="${PYTHONPATH:+$PYTHONPATH:}/some/library/path"

-20

यह पहले से ही यहाँ उत्तर दिया गया है -> क्या मेरा आभासी वातावरण (अजगर) मेरे PYTHONPATH को तोड़ने का कारण है?

Unix / Linux

"निर्यात PYTHONPATH = / usr / स्थानीय / lib / python2.0" इसे ~ / .bashrc फ़ाइल में जोड़ें और "स्रोत ~ / .bashrc" या "टाइप करके इसे स्रोत करें। ~ / .bashrc"।

विंडोज एक्स पी

1) कंट्रोल पैनल पर जाएं 2) डबल क्लिक सिस्टम 3) उन्नत टैब पर जाएं 4) पर्यावरण चर पर क्लिक करें

सिस्टम वेरिएबल्स विंडो में, जांचें कि क्या आपके पास PYTHONPATH नामक एक चर है। यदि आपके पास पहले से ही है, तो जांचें कि यह सही निर्देशिकाओं की ओर इशारा करता है। यदि आपके पास पहले से कोई नहीं है, तो नया बटन पर क्लिक करें और इसे बनाएं।

अजगर कोड

वैकल्पिक रूप से, आप अपने कोड के नीचे भी कर सकते हैं: -

import sys
sys.path.append("/home/me/mypy") 

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