Virtualenv में पायथन 3 का उपयोग करना


778

Virtualenv का उपयोग करते हुए , मैं पायथन (2.7) के डिफ़ॉल्ट संस्करण के साथ अपनी परियोजनाएं चलाता हूं। एक परियोजना पर, मुझे पायथन 3.4 का उपयोग करने की आवश्यकता है।

मैं brew install python3इसे अपने मैक पर इंस्टॉल करता था। अब, मैं एक वर्चुअन कैसे बनाऊं जो नए संस्करण का उपयोग करता है?

उदा sudo virtualenv envPython3

अगर मैं कोशिश करूँ:

virtualenv -p python3 test

मुझे मिला:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
    import os
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
    from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable

1
क्या आपने अपने वर्तमान परिवेश में केवल दुभाषिया को अपडेट करने का प्रयास किया या आपने केवल खरोंच से शुरू करने का फैसला किया?
चार्ली पार्कर

क्या मैक पर सिस्टम पाइथन (python2.x में रखते हुए) को अपडेट किए बिना केवल वर्चुअल वातावरण में python3 को स्थापित करना संभव है?
जून

जवाबों:


1384

बस दौड़ो

virtualenv -p python3 envname

ओपी के संपादन के बाद अपडेट करें:

ओपी के वर्चुअन के संस्करण में बग था, जैसा कि यहां वर्णित है । समस्या को चलाने के द्वारा ठीक किया गया था:

pip install --upgrade virtualenv

17
वर्चुअन अपग्रेड ने काम किया, लेकिन किसी कारण से मुझे भी python3 के बारे में स्पष्ट होना पड़ाvirtualenv -p $(which python3) envname
dk विटामिन

2
क्या यह संभव है कि एक नया वातावरण बनाने के बजाय वर्तमान परिवेश के अजगर दुभाषिया को बदलना संभव है?
चार्ली पार्कर

रस्पियन जेसी पर 'virtualenv --no-site-package python3.4' ने काम किया। -distribute को पदावनत नहीं किया गया है और ppthon3 का प्रयोग virtualenv से आवश्यक नहीं है।
अल्कोपोप79

ऐसा क्यों है कि चलाने के बाद virtualenv -p python3 my_virtual_env, python3आभासी वातावरण के बाहर से भी सुलभ है?
बिश्व मिश्र

@CharlieParker आप अनुक्रम में निम्नलिखित दो चरणों को पूरा कर सकते हैं: 1. हटाएँ bin, lib, include, localऔर shareअपनी परियोजना के रूट निर्देशिका में निर्देशिका। 2. टर्मिनल रन में: virtualenv -p python3 .जो वर्तमान निर्देशिका में एक नए पायथन 3 वर्चुअन को आरंभ करता है।
कॉलन्याह

251

पायथन 3 में आभासी वातावरण के लिए एक अंतर्निहित समर्थन है - वेनव । इसके बजाय इसका इस्तेमाल करना बेहतर हो सकता है। डॉक्स का जिक्र:

आभासी वातावरण का निर्माण पियवेव लिपि को निष्पादित करके किया गया है:

pyvenv /path/to/new/virtual/environment

पायथन 3.6 और नए के लिए अद्यतन:

के रूप में pawciobiel सही ढंग से टिप्पणी , pyvenvहै पदावनत नया तरीका है अजगर 3.6 के रूप में और:

python3 -m venv /path/to/new/virtual/environment

2
मुझे आशा है कि आप सही हैं, क्योंकि मैंने बस वर्चुअलेनव को अजगर के साथ काम करने के लिए छोड़ा था 3.5.2 के साथ
जयेश

1
मुझे स्थान संबंधी चिंताओं की पुष्टि करने वाली कोई जानकारी नहीं मिली है, स्थानांतरित करने योग्य विकल्प के रूप में हटा दिया गया था .... क्या यह अब अनावश्यक है? क्या उनका वर्कअराउंड है? या यह अभी एक ऐप तैयार करने के लिए पूरी तरह से बेकार है?
जेएम बेकर

7
वास्तव में, लेकिन आप भी चला सकते हैं: python3 -m venv /path/v3चूंकि पाइवेनव स्क्रिप्ट को पायथन 3.6 के रूप में चित्रित किया गया है।
पाविसोबिएल

4
मैक पर नवीनतम एनाकोंडा पायथन 3.6 का उपयोग कर, और python3 -m venv /path/v3यहां त्रुटियां। Error: Command '['/path/v3/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exitक्या मैं कुछ भूल रहा हूँ? --without-pipविकल्प के साथ , यह कम से कम स्क्रिप्ट को सक्रिय रूप से सक्रिय / निष्क्रिय करने के साथ बनाता है।
मोनक

3
किसी को पता है कि python3.6 -m venv <venvname> को कैसे सक्रिय किया जाए। निर्मित निर्देशिका में न तो कोई लिपियाँ हैं, न ही बिन / उपखंड में "सक्रिय"।
शायने

60

Iv ने pyenv की कोशिश की और यह अजगर संस्करणों को बदलने के लिए बहुत आसान है (वैश्विक, फ़ोल्डर में स्थानीय या वर्चुअन में):

brew install pyenv

फिर आप चाहते हैं अजगर संस्करण स्थापित करें:

pyenv install 3.5.0

और बस आवश्यक इंटरप्रेटर संस्करण के लिए पथ के साथ virtualenv बनाएँ:

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv

यह बात है, संस्करण की जाँच करें:

. ./myenv/bin/activate && python -V

Pyenv pyenv-virtualenv के लिए प्लगइन भी हैं, लेकिन यह मेरे लिए किसी तरह काम नहीं करता है।


ऐसा लगता है कि आपकी विधि को एक नया अजगर वातावरण बनाने की आवश्यकता है। क्या जब भी मैं चाहूं तो पाइनेव वर्चुअनव और सरलता से मेरे पाइथन संस्करण को बदल सकता है?
चार्ली पार्कर

58

पूर्वापेक्षाएँ स्थापित करें।

sudo apt-get install python3 python3-pip virtualenvwrapper

एक पायथन 3 आधारित आभासी वातावरण बनाएं। वैकल्पिक रूप से --system-site-packagesध्वज को सक्षम करें ।

mkvirtualenv -p /usr/bin/python3 <venv-name>

आभासी वातावरण में सेट करें।

workon <venv-name>

अन्य आवश्यकताओं का उपयोग कर स्थापित करें pipपैकेज मैनेजर ।

pip install -r requirements.txt
pip install <package_name>

जब एक साथ कई अजगर परियोजनाओं पर काम किया जाता है, तो आमतौर पर pdbppविश्व स्तर पर आम पैकेज स्थापित करने की सिफारिश की जाती है और फिर उन्हें वर्चुअन में फिर से उपयोग किया जाता है।

इस तकनीक का उपयोग करने से न्यूनतम डिस्क स्थान और नेटवर्क बैंडविड्थ का उपभोग करने के अलावा, पैकेज लाने और उन्हें स्थापित करने में बहुत समय लगता है।

sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>

Django विशिष्ट निर्देश

यदि बहुत सारे सिस्टम वाइड पायथन पैकेज हैं, तो इसका उपयोग नहीं करने की सिफारिश की जाती है --system-site-packages विशेष रूप से विकास के दौरान ध्वज का क्योंकि मैंने देखा है कि यह Django स्टार्टअप को बहुत धीमा कर देता है। मुझे लगता है कि Django पर्यावरण प्रारंभिककरण मैन्युअल रूप से सिस्टम पथ से सभी साइट संकुल को स्कैन और जोड़ रहा है जो इसका कारण हो सकता है। यहां तक ​​कि python manage.py shellबहुत धीमी हो जाती है।

कहा है कि कौन सा विकल्प बेहतर काम करता है। केवल --system-site-packagesDjango परियोजनाओं के लिए ध्वज को छोड़ना सुरक्षित हो सकता है ।


1
मैं OSX के लिए इस आवेदन किया है, यह काम (सिवाय का उपयोग नहीं किया apt-getलेकिन brew)
sdkks

38
virtualenv --python=/usr/bin/python3 <name of env>

मेरे लिए काम किया।


मैंने कोशिश की कि लेकिन कहा जाता है The executable python3 (from --python=python3) does not exist, आप क्या करेंगे? मैं isntall python3 काढ़ा करना चाहता था, लेकिन अनिश्चित था कि अगर यह एक अच्छा विचार था या अगर मेरा सिस्टम भ्रमित हो जाएगा कि मैं किस अजगर संस्करण का उपयोग कर रहा हूं
चार्ली पार्कर

Ubuntu में एक आकर्षण की तरह काम करता है 16.04!
एरिक विएरा

20

वातावरण बनाते समय आप पायथन के विशिष्ट संस्करण को निर्दिष्ट कर सकते हैं ।
यह virtualenv.py में उल्लिखित है

virtualenv --python=python3.5 envname

कुछ मामलों में यह निष्पादन योग्य के लिए पूर्ण पथ होना चाहिए:

virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname

कैसे -pकाम करता है

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)

यह यहां सबसे अच्छा जवाब है
कोलियर

14

मेरा भी यही ERRORसंदेश था। मेरे मामले में tbrisker का समाधान काम नहीं आया। इसके बजाय इस मुद्दे को हल:

$ python3 -m venv .env

13

अजगर / python3 में आभासी वातावरण चलाने के लिए आपको बस यही चाहिए

पहले यदि virtualenvस्थापित नहीं है, तो चलाएं

pip3 install virtualenv 

अब चलाएं:

virtualenv -p python3 <env name> 

कुछ समय में cmd virtualenvविफल रहता है, यदि ऐसा है तो इसका उपयोग करें:

python3 -m virtualenv <env_name>  # you can specify full path instead <env_name> to install the file in a different location other than the current location

अब वर्चुअल env सक्रिय करें:

source <env_name>/bin/activate

या:

source `pwd`/<env_name>/bin/activate

अब दौड़ो

which python

आपको अपने डायर को पूरा रास्ता देखना चाहिए और <env_name>/bin/python प्रत्यय

Virtualenv से बाहर निकलने के लिए, दौड़ें:

deactivate 

8

पायथन अब आभासी वातावरण के अपने कार्यान्वयन के साथ आता है, जिसे "वेनव" के नाम से जाना जाता है। मैं virtualenv के बजाय, इसका उपयोग करने का सुझाव दूंगा।

Venv से उद्धरण - डॉक्स ,

संस्करण 3.6 के बाद से पदावनत: पाइवेनव पायथन 3.3 और 3.4 के लिए आभासी वातावरण बनाने के लिए अनुशंसित उपकरण था, और इसे पायथन 3.6 में चित्रित किया गया है।

वर्जन 3.5 में बदला: वर्चुअल वातावरण बनाने के लिए अब वेज का इस्तेमाल करने की सलाह दी जाती है।

खिड़कियों के लिए, कुछ प्रोजेक्ट पर वेन शुरू करने के लिए, cmd खोलें:

python -m venv "c:\path\to\myenv"

(यदि कोई रिक्त स्थान है तो निर्देशिका पथ के आसपास दोहरे उद्धरण का उपयोग करने का सुझाव देगा। उदा: "C: / My Dox / Spaced Directory / Some")

एक बार जब वेव सेट हो जाता है, तो आपको अपने प्रोजेक्ट डायरेक्टरी के अंदर कुछ नए फोल्डर दिखाई देंगे। उनमें से एक "लिपियों" होगा।

वेन को सक्रिय या आह्वान करने के लिए आपको आवश्यकता है:

C:\> <venv>\Scripts\activate.bat

आप अपने शेल में "निष्क्रिय" टाइप करके एक आभासी वातावरण को निष्क्रिय कर सकते हैं। इसके साथ, आप अब अपने प्रोजेक्ट विशिष्ट पुस्तकालयों को स्थापित करने के लिए तैयार हैं, जो "लीब" फ़ोल्डर के नीचे निवास करेंगे।

============================== 1 ============== संपादित करें ==================== जिस परिदृश्य पर नीचे चर्चा की जाएगी, वह मूल रूप से नहीं पूछा गया है, बस इस मामले को जोड़ते हुए किसी ने अजगर विस्तार के साथ vscode का उपयोग किया है

यदि आप इसके पाइथन एक्सटेंशन के साथ बनाम कोड का उपयोग करते हैं, तो आपको इसके पाइलिंट के साथ एक समस्या का सामना करना पड़ सकता है जो वैश्विक स्थापना की ओर इशारा करता है। इस स्थिति में, पाइलिंट आपके वर्चुअल वातावरण में स्थापित मॉड्यूल को नहीं देख पाएगा और इसलिए आयात करते समय त्रुटियों को दिखाएगा।

यहाँ पिछले पाने के लिए एक सरल तरीका है।

cd Workspace\Scripts
.\Activate.ps1
code .

हम मूल रूप से पर्यावरण को पहले सक्रिय कर रहे हैं और फिर बनाम कोड लागू कर रहे हैं ताकि पर्यावरण के भीतर पाइलिंट शुरू हो और सभी स्थानीय पैकेजों को देख सकें।


मैं virtualenvआभासी वातावरण ( workon, आदि) के दिन-प्रतिदिन के उपयोग के लिए उपयोग करता हूं , लेकिन नए आभासी वातावरण के विश्वसनीय निर्माण के लिए python3.xयह एकमात्र तरीका है जो मैंने पाया है कि काम करता है।
Bobble

6

अन्य उत्तरों के अलावा, मैं यह जाँचने की सलाह देता हूँ कि आप किस virtualenv को निष्पादित कर रहे हैं:

which virtualenv

यदि यह / usr / स्थानीय / बिन में कुछ बदल जाता है, तो यह संभव है - यहां तक ​​कि संभावना है - कि आपने अपने सिस्टम के पैकेज मैनेजर (ओपी के मामले में काढ़ा) का उपयोग किए बिना virtualenv (संभवतः easy_tools या पाइप का उपयोग करके) स्थापित किया है। यह मेरी समस्या थी।

वर्षों पहले - जब मैं और भी अधिक अज्ञानी था - मैंने virtualenv स्थापित किया था और यह मेरे सिस्टम के पैकेज प्रदान किए गए virtualenv को मास्क कर रहा था।

इस पुराने, टूटे हुए वर्चस्व को हटाने के बाद, मेरी समस्याएं दूर हो गईं।


6

अजगर 3.6 में, मैंने कोशिश की python3 -m venv myenv, प्रलेखन के अनुसार, लेकिन इसमें इतना समय लग रहा था। तो बहुत ही सरल और त्वरित आदेश python -m venv yourenv यह मेरे लिए python3.6 पर काम किया है।


5

मैक पर मुझे इसे काम करने के लिए निम्न कार्य करना पड़ा।

mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere

यह जानने के लिए कि आपका इच्छित पायथन संस्करण स्थान उपयोग है which python2.7या which python3.5या which python3.6, तो इसके बारे में बदलें--python=DIRECTORY
Santhosh

3

यदि आप virtualenv burritobrew install python3 के साथ python3 ( ) स्थापित करते हैं , तो आप कर सकते हैं mkvirtualenv -p $(which python3) env_name

बेशक, मुझे पता है कि virtualenv burrito सिर्फ एक आवरण है, लेकिन इसने मुझे कुछ वर्षों में अच्छी तरह से सेवा दी है, जिससे कुछ सीखने की मात्रा घटती है।




2

एनाकोंडा 3 (पायथन 3) के साथ काम करते समय परेशानी होने वालों के लिए।

आप उपयोग कर सकते हैं

conda create -n name_of_your_virtualenv python=python_version 

पर्यावरण को सक्रिय करने के लिए (Linux, MacOS)

source activate name_of_your_virtualenv

विंडोज के लिए

activate name_of_your_virtualenv

1

मैंने ऊपर दिए गए सभी सामानों की कोशिश की, यह अभी भी काम नहीं किया। तो एक क्रूर बल के रूप में, मैंने सिर्फ एनाकोंडा को फिर से स्थापित किया, वर्चुअनव को फिर से स्थापित किया ... और यह काम किया।

Amans-MacBook-Pro:~ amanmadan$ pip install virtualenv
You are using pip version 6.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting virtualenv
  Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB)
    100% |████████████████████████████████| 3.5MB 114kB/s 
Installing collected packages: virtualenv
Successfully installed virtualenv-15.0.3
Amans-MacBook-Pro:python amanmadan$ virtualenv my_env
New python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/python
Installing setuptools, pip, wheel...done.
Amans-MacBook-Pro:python amanmadan$ 

1

मैं सेंटोस 7 पर डिफ़ॉल्ट संस्करण के रूप में अजगर 2.7.5 रखना चाहता था, लेकिन अजगर 2 में एक आभासी वातावरण में चल रहा है।

मैंने नीचे दिए गए लिंक को नवीनतम पायथन संस्करण (पायथन 3.6.1) https://www.digitalocean.com/community/tutorial_series/how-to-install-and-up-a-l-local-programming के लिए सबसे अच्छा समाधान पाया। -environment के लिए अजगर -3 । यह विभिन्न प्लेटफार्मों के लिए चरणों को दिखाता है लेकिन मूल चरण हैं

  1. अपने मंच के लिए python3.x (यदि मौजूद नहीं है) स्थापित करें
  2. अपने मंच के लिए python3.x-devel स्थापित करें
  3. Python 3.x में आभासी वातावरण बनाएँ (उदाहरण के लिए $ python3.6 -m venv virenv_test_p3 /)
  4. अजगर 3.x (उदाहरण के लिए स्रोत virenv_test_p3 / bin / सक्रिय) के लिए वृषण को सक्रिय करें
  5. उन पैकेजों को स्थापित करें जिन्हें आप अपने नए अजगर 3 आभासी वातावरण में उपयोग करना चाहते हैं और जो समर्थित हैं (उदाहरण के लिए पाइप स्थापित Django == 1.11.2)

1

नीचे दिए गए सरल कमांड 3.5 संस्करण के साथ एक आभासी एनवी बना सकते हैं

apt-get install python3-venv

python3.5 -m venv <your env name>

यदि आप 3.6 के रूप में वर्चुअल एनवी संस्करण चाहते हैं

python3.6 -m venv <your env name>


0

मुझे यह त्रुटि मिली कि इसे miniconda3 इंस्टॉल के साथ संघर्ष होने के कारण स्थापित करें जब आप टाइप करते हैं "जो virtualenv" और यदि आपने मिनीकोन्डा स्थापित किया है और यह उस इंस्टॉल को इंगित कर रहा है तो आप इसे हटा सकते हैं (यदि आपकी तरह मेरे और स्थानांतरित नहीं किया गया है इसे अभी तक) या अपने पर्यावरण चर को उस बिंदु पर बदलें जिसे आप चाहते हैं।


0

विंडोज कमांड लाइन पर, निम्नलिखित ने मेरे लिए काम किया। पहले पता करें कि आपके अजगर निष्पादन योग्य कहां हैं:

where python

यह आपके सिस्टम पर विभिन्न python.exe के लिए पथ आउटपुट करेगा। यहाँ मेरा था:

C:\Users\carandangc\Anaconda3\python.exe
C:\Python27\python.exe

तो Python3 के लिए, यह मेरे लिए पहले पथ में स्थित था, इसलिए मैं उस एप्लिकेशन के रूट फ़ोल्डर में cd करता हूं जहां मैं एक वर्चुअल वातावरण फ़ोल्डर बनाना चाहता हूं। फिर मैं निम्नलिखित चलाता हूं जिसमें मेरे Python3 निष्पादन योग्य पथ शामिल है, मेरे आभासी वातावरण का नामकरण 'vev':

virtualenv --python=/Users/carandangc/Anaconda3/python.exe venv

अगला, वर्चुअल वातावरण सक्रिय करें:

call venv\Scripts\activate.bat

अंत में, इस आभासी वातावरण के लिए निर्भरताएं स्थापित करें:

pip install -r requirements.txt

यह आवश्यकताएं। यदि आप वर्चुअल वातावरण में आपके एप्लिकेशन के लिए आवश्यक पुस्तकालयों / मॉड्यूल को जानते हैं, तो यह मैन्युअल रूप से पॉप्युलेट किया जा सकता है। यदि आपके पास किसी अन्य वातावरण में चल रहा एप्लिकेशन है, तो आप निम्न को चलाकर निर्भरता को स्वचालित रूप से उत्पन्न कर सकते हैं (जहां यह काम कर रहा है उस वातावरण में एप्लिकेशन फ़ोल्डर में सीडी):

pip freeze > requirements.txt

फिर एक बार आपके पास आवश्यकताएँ हैं। तब जब आपके पास 'फ्रोजन' है, तो आप निम्नलिखित के साथ एक अन्य मशीन या स्वच्छ वातावरण पर आवश्यकताओं को स्थापित कर सकते हैं (एप्लिकेशन फ़ोल्डर में सीडी के बाद):

pip install -r requirements.txt

वर्चुअल वातावरण में अपने अजगर संस्करण को देखने के लिए, दौड़ें:

python --version

तब वॉयला ... आपके पास अपने आभासी वातावरण में पायथन 3 चल रहा है। मेरे लिए आउटपुट:

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