Python Virtualenv - Virtualenvwrapper.hook_loader नाम का कोई मॉड्यूल नहीं है


79

मैं मैक ओएस 10.6.8 चला रहा हूं। और अजगर 2.6 के अलावा अजगर 2.7 और एक नए virtualenv में अजगर 2.7 का उपयोग करने के लिए स्थापित करना चाहता था। मैंने निम्नलिखित चरणों को निष्पादित किया:

मैंने अजगर 2.7 डाउनलोड किया और इसे स्थापित किया:

http://www.python.org/ftp/python/2.7.3/python-2.7.3-macosx10.6.dmg

तब मैं python2.7 का उपयोग करके एक नया वर्चुअन सेटअप करने के लिए कमांड चलाता हूं:

mkvirtualenv --python=python2.7 mynewenv

मेरा .bash_profile निम्नलिखित की तरह दिखता है:

# needed for virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh


# Setting PATH for Python 2.7
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/2.7/bin:${PATH}"
export PATH

अब जब मैं कंसोल खोलता हूं तो मुझे निम्नलिखित त्रुटि संदेश मिलता है।

ImportError: No module named virtualenvwrapper.hook_loader
virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python and that PATH is set properly.

मैंने एक अलग पोस्ट में भी पाया कि मुझे virtualenvwrapper को अपग्रेड करना चाहिए। इससे कोई फायदा नहीं हुआ।

sudo pip install virtualenvwrapper --upgrade

किसी भी सहायता की सराहना की जाएगी।


4
क्या आपने इसे देखा या आप अन्य तरीके से कोशिश कर सकते हैंeasy_install
प्रशंसा करें

धन्यवाद मैंने पोस्ट को देखा। लेकिन मैं python 2.7 के लिए virtualenv स्थापित करने का प्रबंधन नहीं कर सकता। संदेश यह है कि virtualenv पहले से ही 2.6 के लिए स्थापित है। मैंने निम्नलिखित कमांड्स चलाए हैं: ~ TK $ जो python /Library/Frameworks/Python.framework/Versions/2.7/bin/python ~ TK $ sudo pip install virtualenv आवश्यकताएँ पहले से ही संतुष्ट हैं (उपयोग करने के लिए नवीनीकरण): virtualenv in / लाइब्रेरी / पायथन / 2.6 / साइट-पैकेज / वर्चुअनव-1.6-p22.6.egg क्लीनिंग ...
थॉमस क्रेम्मल

मैंने सिर्फ एक virtualenv की स्थिति देखी और ऐसा नहीं लगता है कि यह Py 2.7 का समर्थन करता है।

2
बस एक नोट - मैंने इस मुद्दे को एक अलग मामले में मारा। मैंने के माध्यम से एक virtualenv बनाना शुरू किया mkvirtualenvऔर फिर इसे (के साथ Ctrl+C) बंद कर दिया । वर्चुअन को फिर से बनाने की कोशिश करने पर, पिछली बार से कुछ बचे हुए थे। मैं अपने envs फ़ोल्डर में गया और अपूर्ण रूप से निर्मित वातावरण को हटा दिया। उसके बाद, उसी mkvirtualenvकमांड ने ठीक से काम किया।
ड्रिफ्टकैचर

2
Yibo यांग की टिप्पणी मेरे Ubuntu स्थापना के लिए भी हाजिर थी। बस वर्तनी से सावधान रहें ... ऊपर VIRTUALENVWAPPER_PYTHON = / usr / bin / python3 का निर्यात VIRTUALENVWAPAPER में "v" के साथ होना चाहिए
केविन

जवाबों:


53

नीचे दिए गए चरणों का पालन करके समस्या हल की गई:

#switch the /usr/bin/python link to point to current python link
cd /usr/bin
sudo mv python python.bak
sudo ln -s /Library/Frameworks/Python.framework/Versions/Current/bin/python python

निर्यात कमांड को फिर से व्यवस्थित करें ताकि यह मेरे .bash_profile फ़ाइल में virtualenv कमांड से पहले रखा जाए:

PATH=/Library/Frameworks/Python.framework/Versions/2.7/bin:$PATH
export PATH

# needed for virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

फिर से स्थापित करें, आसान स्थापित करें और पीआईपी स्थापित करें। यह स्पष्ट रूप से आवश्यक है कि वे नए अजगर संस्करण के साथ ठीक से काम करें:

sudo sh setuptools-0.6c11-py2.7.egg

sudo easy_install-2.7 pip

pip install virtualenv

1
धन्यवाद - मैक माउंटेन लायन पर मेरे पायथन 2.7 को अपग्रेड करने के बाद मुझे वही समस्या हुई और इसने इसे ठीक कर दिया।
ए। जेसी जिरू डेविस

3
माउंटेन लायन पर, मेरे लिए चाल / विकल्प / स्थानीय / बिन के लिए पथ सुनिश्चित कर रहा था स्रोत ... लाइन से पहले सेट किया गया था। मुझे OSX पायथन लिंक के साथ / usr / bin या कुछ और में गड़बड़ नहीं करना था। अगर $ HOME / .virtualenvs पर सेट नहीं किया गया है, तो भी WORKON_HOME अब डिफॉल्ट हो गया है
मार्क

4
@ टिप्पणी के लिए +1। इसके अलावा, काढ़ा उपयोगकर्ताओं के लिए: वास्तविक पथ है usr/local/Cellar/python/<PYTHON-VERSION>/bin/
रासेन

धन्यवाद, यह डेबियन में अपने आप को अजगर 2.7.4 संकलन के बाद मेरी मदद करता है।
ज़ुलु

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

23

इसके अलावा, यदि आपके पास मैकपोर्ट हैं, तो सुनिश्चित करें कि /opt/local/Library/Frameworks/Python.framework/Versions/2.7/binपहले /Library/Frameworks/Python.framework/Versions/2.7/binऔर /usr/local/binPATH में सूचीबद्ध किया गया है। फिर आप में निम्नलिखित सेट करें .profile:

export VIRTUALENVWRAPPER_PYTHON=`which python`
export VIRTUALENVWRAPPER_VIRTUALENV=`which virtualenv`
source `which virtualenvwrapper.sh`

4
मैं अपने ओएस python2 के साथ python3 स्थापित कर रहा हूं और सेटिंग VIRTUALENVWRAPPER_PYTHONने मेरी समस्या हल कर दी है।
जोहान गॉव

8

मेरे मामले में, इस लाइन को मेरी .zshrc फ़ाइल में जोड़ने से चाल चली गई,

export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7

3
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/3.6.5/bin/python3.6नवीनतम संस्करण के लिए।
oba2311

मेरे बैश_प्रोफाइल में,export VIRTUALENVWRAPPER_PYTHON="which python3"
ज़ल डोंग

8

उबंटू 18.04 और पायथन 3+ का उपयोग करने वाले किसी व्यक्ति के लिए , इसने मेरे लिए यह चाल चली :

which python3 # outputs /usr/bin/python3 
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  
source `which virtualenvwrapper.sh`  

4

यह मेरे साथ हुआ और मैंने इसे फिर से स्थापित करके हल किया pip। क्या खुशी थी कि परिणाम के रूप में which pipदिया गया था /usr/bin/pip, जबकि which pythonदिया गया था /usr/local/bin/python। के लिए रास्ता pipहोना चाहिए/usr/local/bin/pip । यह शायद तब टूट गया जब मैंने अपने पायथन इंस्टॉलेशन को अपडेट किया।

यदि आप पाइप दस्तावेज़ीकरण का पालन करते हैं, तो आप pipअपने वर्तमान कार्यशील पायथन सेटअप के लिए आसानी से पुन: स्थापित कर सकते हैं । आपको:

  1. Get-pip.py स्क्रिप्ट डाउनलोड करें (सीधे लिंक से)pip 's प्रलेखन )।
  2. भागो python get-pip.py

इससे मेरे लिए समस्या हल हो गई।


3

कई चीजें हैं जो इस त्रुटि का कारण बन सकती हैं। अगर आपका माहौल है

  • सेंटोस 7, से python3स्थापित के साथepel-release
  • pip3 के साथ स्थापित python3.4 get-pip.py
  • virtualenvwrapper के साथ स्थापित pip3
  • एक अजगर आभासी वातावरण के साथ बनाया है mkvirtualenv -p /usr/bin/python3.4

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

[user@localhost ~] $ mkvirtualenv -p /usr/bin/python3.4 venv
Using base prefix '/usr'
New python executable in /home/user/.virtualenvs/venv/bin/python3.4
Also creating executable in /home/user/.virtualenvs/venv/bin/python
Installing setuptools, pip, wheel...done.
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/preactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/postactivate
virtualenvwrapper.user_scripts creating /home/user/.virtualenvs/venv/bin/get_env_details
/home/user/.virtualenvs/venv/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper')
/home/user/.virtualenvs/venv/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportError'>: No module named 'virtualenvwrapper')

# the virtualenv should now activated
(venv)[user@localhost ~] $ pip install virtualenvwrapper

2

मुझे बस यह सुनिश्चित करना था कि / usr / स्थानीय / बिन / अजगर मौजूद था।

मेरे लिए यह एक सरल था:

ln -s /usr/local/bin/python2.7 /usr/local/bin/python

1

मुझे समान त्रुटि मिली । मुझे पता चला कि मेरे पास पाइप का पुराना संस्करण है। मैंने केवल पाइप को अपग्रेड करके त्रुटि को ठीक किया।


0

मैंने सिर्फ अजगर 3.5 स्थापित किया, virtualenvwrapper की कोशिश की और फिर यह समस्या थी। मुझे पता चला कि python3.5 में स्थापित किया गया था /usr/local/bin/python3.5और नहीं /usr/bin/python3.5। इसलिए, मैंने निम्नलिखित की तरह दिखने के लिए अपनी .bash_profile स्क्रिप्ट को संशोधित किया और अब सब कुछ काम करने लगता है

# Setting PATH for Python 3.5
# The orginal version is saved in .bash_profile.pysave
PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
export PATH
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3.5
export WORKON_HOME=$HOME/.virtualenvs
source /Users/bentaub/.virtualenvs/djangodev/bin/virtualenvwrapper.sh

मैं यह सुनिश्चित करने के लिए एक नौसिखिए के लिए पर्याप्त हूं कि कैसे python3.5 के पथ में 'स्थानीय' मुझे लंबे समय में प्रभावित करने वाला है, लेकिन अभी के लिए, यह काम करता है।


0

पैकेज की स्थापना रद्द करने के बाद मुझे यह समस्या थी virtualenvwrapper। जब मैं किसी भी उपयोगकर्ता (या suकिसी दूसरे से) में लॉग इन करता हूं , तो मुझे मिलेगा:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named virtualenvwrapper.hook_loader                                                                                                                                                                       
virtualenvwrapper.sh: There was a problem running the initialization hooks.                                                                                                                                                      

If Python could not import the module virtualenvwrapper.hook_loader,                                                                                                                                                             
check that virtualenv has been installed for                                                                                                                                                                                     
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is                                                                                                                                                                        
set properly.

समाधान /etc/bash_completion.d/virtualenvwrapperफ़ाइल को हटाने के लिए था ।

संपादित करें:

यदि आप पुनर्स्थापित करते हैं तो उपरोक्त फ़ाइल को न हटाएं या इसे फिर से बनाया नहीं जाएगा virtualenvwrapper। इसके बजाय क्या आपको बस इतना करना है पैकेज जब आप इसे स्थापना रद्द करें। डेबियन पर इस तरह:purgevirtualenvwrapper

apt-get remove --purge virtualenvwrapper

0

अपने को अनइंस्टॉल करने की कोशिश करें virtualenvऔर संस्करण 2.7 (मुझे लगता है) virtualenvwrapperका उपयोग करके इसे फिर से इंस्टॉल करें pip

मुझे उसी त्रुटि का सामना करना पड़ा और मैंने बस यही किया और अपनी समस्या हल की।

मैं यू का उपयोग कर रहा हूं


0

हालांकि एक स्वीकृत जवाब है, मुझे लगा कि मैं इसे मेरे लिए तय करूंगा।

सबसे पहले मैंने पायथन को स्थापित किया और होमब्रे के माध्यम से इसे उन्नत किया । मैं ZSH का भी उपयोग कर रहा हूं, अगर कुछ बिट्स आपके आउटपुट से मेल नहीं खाते हैं, तो ऐसा हो सकता है।

काढ़ा जानकारी अजगर चल रहा है और उत्पादन के माध्यम से देख कर मैं निम्नलिखित जानकारी का अच्छा सा पाया:

If you wish to have this formula's python executable in your PATH then add
the following to ~/.zshrc:
    export PATH="/usr/local/opt/python/libexec/bin:$PATH"

तो मैंने इसे अपने टर्मिनल स्टार्टअप स्क्रिप्ट में जोड़ा जैसा कि दिखाया गया है और त्रुटि एन लंबे समय तक प्रदर्शित होती है।

नोट: मैंने इसे अपने पेट के दूसरे भाग में डाला और त्रुटि स्टार्ट अप पर बनी रही।


0

कॉनडा / एनाकोंडा परियोजना स्थापित करने के बाद एक समान मुद्दे में भाग गया। यह सवाल MAC पर मेरे मुद्दे को हल करने में काफी मददगार था। इस मुद्दे को सुलझाने में मेरा .zshrcप्रासंगिक हिस्सा इस तरह लग रहा था:

export VIRTUALENVWRAPPER_PYTHON=$HOME/Applications/conda/bin/python
source $HOME/Applications/conda/bin/virtualenvwrapper.sh

यह इस बात पर निर्भर करता है कि मैंने कहां कॉन्डा इंस्टॉल किया है और आपको इसे अपने मामले में लगाना होगा। आपके द्वारा दिए गए वातावरण के आधार पर निर्दिष्ट करने के लिए कि आपने एनाकोंडा कहाँ स्थापित किया है, आप निम्न का उपयोग कर सकते हैं:

$  ~/ -name virtualenvwrapper.sh # to see where you have this. May already be prefilled in your shell profile[.zshrc or .profile]

$ which python   # to know the default python your project or rather where conda has installed python for you

अन्य उत्तरों में हाइलाइट के रूप में UNINSTALL और INSTALL virtualenv और virtualenvwrapper को न भूलें।


0

बस सेंटोस 7.4 पर इस मुद्दे में टकरा गया।

उपरोक्त में से कोई भी उत्तर मेरे मामले के अनुकूल नहीं है। पाइथन लिबास में बहुत सख्त फ़ाइल अनुमतियों के लिए मैंने इसे लगभग खोदने के बाद बहुत कम किया (मुझे लगता है कि सेंटोस पर अजगर की स्थापना अन्य पोसिक्स प्रणालियों से थोड़ी भिन्न है)।

इसलिए, यदि सब कुछ विफल रहता है, तो आप यह जांचना चाहते हैं कि आपके अजगर लिबास उपयोगकर्ता द्वारा पढ़े जाने योग्य हैं जिनके साथ आप virtualenvwrapper चलाने की कोशिश कर रहे हैं।

विशेष रूप से जांच में: /usr/lib/python3.6 /usr/lib64/python3.6 (विभिन्न अजगर संस्करणों के लिए पथ में संशोधन)।

आपको लगता है कि देखते हैं, तो groupऔर othersकमी पढ़ सकते हैं और फिर वहाँ में अनुमतियाँ निष्पादित उन्हें जोड़ने: sudo chmod og+rx -R /usr/lib/python3.6 sudo chmod og+rx -R /usr/lib64/python3.6

नोट: मुझे यकीन नहीं है कि क्या यह सेंटोस सुरक्षा नीति के खिलाफ काम करता है, लेकिन यह तब तक सुरक्षित है जब तक आप writeदृढ़ता नहीं देते ।


0

मेरी स्थिति में (ओएस एक्स 10.13.6), इसने ऐसा किया

brew install python2 --upgrade

0

मुझे यह एक ही समस्या थी और जो गलत था उसे कॉन्फ़िगर करने पर इतना समय बिताया। और मुझे अंत में पता चला कि क्या गलत था।

पहले मैंने देखा कि virtualenvwrapper फ़ोल्डर कहाँ मौजूद है। मेरे मामले में /usr/local/lib/python3.7/site-packages। फ़ोल्डर के अंदर हुक_लोडरहोम है जो त्रुटि का कारण बना।

इसके बाद, मैंने अजगर स्क्रिप्ट का उपयोग किया।

python3

import sys;print('\n'.join(sys.path))

मुझे /usr/local/lib/python3.7/site-packages निर्देशिका नहीं मिल सकी है, इसलिए मैंने इसे देखा,

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python3.7/site-packages

.bashrc फ़ाइल के लिए। किया हुआ।

एक्रोनिम का अर्थ PYTHON PATH

जैसा कि आप उपरोक्त लिंक में देख सकते हैं, PYTHONPATH मॉड्यूल के लिए डिफ़ॉल्ट खोज पथ को बढ़ाता है।

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