Python Virtualenv — нет модуля с именем virtualenvwrapper.hook_loader

Я использую Mac OS 10.6.8. и хотел установить в дополнение к python 2.6 также python 2.7 и использовать python 2.7 в новом virtualenv. Я выполнил следующие шаги:

Я скачал python 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

Любая помощь будет оценена по достоинству.


person Thomas Kremmel    schedule 16.07.2012    source источник
comment
Вы видели это или можете попробовать другой способ easy_install   -  person admire    schedule 16.07.2012
comment
Спасибо посмотрел пост. Но мне не удается установить virtualenv для python 2.7. Сообщение в том, что virtualenv уже установлен для 2.6. Я выполнил следующие команды: ~ TK$ which python /Library/Frameworks/Python.framework/Versions/2.7/bin/python ~ TK$ sudo pip install virtualenv Требование уже выполнено (используйте --upgrade для обновления): virtualenv в / Library/Python/2.6/site-packages/virtualenv-1.6-py2.6.egg Очистка...   -  person Thomas Kremmel    schedule 16.07.2012
comment
Я только что посмотрел статус virtualenv, и он не похоже, он поддерживает Py 2.7.   -  person martineau    schedule 16.07.2012
comment
Просто примечание - я столкнулся с этой проблемой в другом случае. Я начал создавать виртуальную среду через mkvirtualenv, а затем остановил ее (с помощью Ctrl+C). При попытке снова создать виртуальную среду остались некоторые остатки с прошлого раза. Я зашел в папку envs и удалил незавершенно построенную среду. После этого та же самая команда mkvirtualenv заработала корректно.   -  person driftcatcher    schedule 22.02.2013
comment
Комментарий Yibo Yang был уместным и для моей установки Ubuntu. Просто будьте осторожны с написанием... выше следует экспортировать VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 с v в VIRTUALENVWRAPPER   -  person Kevin    schedule 02.03.2016


Ответы (16)


Проблема была решена следующим образом:

#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

Измените команду экспорта, чтобы она располагалась перед командами virtualenv в моем файле .bash_profile:

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

Переустановите setuptools, простая установка и PIP. Это, очевидно, необходимо для того, чтобы они правильно работали с новой версией Python:

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

sudo easy_install-2.7 pip

pip install virtualenv
person Thomas Kremmel    schedule 16.07.2012
comment
Спасибо - после обновления моей установки Python 2.7 на Mac Mountain Lion у меня возникла та же проблема, и это решило ее. - person A. Jesse Jiryu Davis; 03.01.2013
comment
В Mountain Lion трюк для меня заключался в том, чтобы ПУТЬ для /opt/local/bin был установлен ДО исходной ... строки. Мне не пришлось возиться со ссылками OSX Python в /usr/bin или чем-то еще. Также WORKON_HOME теперь используется по умолчанию, если не установлено значение $HOME/.virtualenvs. - person Mark; 06.01.2013
comment
+1 за комментарий @Mark. Кроме того, для пользователей варева: фактический путь — usr/local/Cellar/python/<PYTHON-VERSION>/bin/. - person rsenna; 26.06.2013
comment
Спасибо, это помогло мне после компиляции python 2.7.4 в Debian. - person Zulu; 06.07.2013
comment
В моем случае проблема возникла только из-за того, что я пытался удаленно войти в другую машину. Подсказка: это означает, что проблема не на локальном компьютере, а на компьютере, на который вы входите! Думал, что упомяну об этом на случай, если кто-то окажется в этом месте. - person smileBot; 21.07.2013
comment
Спасибо! Мне пришлось использовать ez_setup для установки инструментов настройки bitbucket.org/pypa/setuptools/raw/ bootstrap/ez_setup.py. После загрузки запустите sudo python ez_setup.py. - person reubano; 05.09.2013
comment
Спасибо, у меня сработало в Ubuntu 12.04. У меня было установлено две версии Python, одна в /usr/bin, другая в /usr/local/bin, а pip и easy_install использовали /usr/local/bin/python2.7. - person dusan; 17.09.2013

Кроме того, если у вас есть macports, убедитесь, что /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin указан перед /Library/Frameworks/Python.framework/Versions/2.7/bin и /usr/local/bin в PATH. Затем установите в себе .profile следующее:

export VIRTUALENVWRAPPER_PYTHON=`which python`
export VIRTUALENVWRAPPER_VIRTUALENV=`which virtualenv`
source `which virtualenvwrapper.sh`
person reubano    schedule 05.09.2013
comment
Я устанавливаю python3 вместе с моей ОС python2, и установка VIRTUALENVWRAPPER_PYTHON решила мою проблему. - person Johan Gov; 09.04.2015

Для тех, кто использует Ubuntu 18.04 и Python 3+, это помогло мне:

which python3 # outputs /usr/bin/python3 
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3  
source `which virtualenvwrapper.sh`  
person Kalob Taulien    schedule 07.01.2019

В моем случае добавление этой строки в мой файл .zshrc помогло,

export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7
person pecai    schedule 21.04.2017
comment
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/3.6.5/bin/python3.6 для последней версии. - person oba2311; 05.06.2018
comment
в моем bash_profile, export VIRTUALENVWRAPPER_PYTHON="which python3" - person Fai Zal Dong; 23.10.2020

Это случилось со мной, и я решил это, переустановив pip. В результате which pip дал /usr/bin/pip, а which python дал /usr/local/bin/python. Путь для pip должен быть /usr/local/bin/pip. Это, вероятно, сломалось, когда я обновил свою установку Python.

Если вы следуете документации pip, вы можете легко переустановить pip для текущей рабочей установки Python. . Тебе надо:

  1. Загрузите скрипт get-pip.py (прямая ссылка из документации pip).
  2. Выполнить python get-pip.py.

Это решило проблему для меня.

person Omar Trejo    schedule 21.04.2015

Есть ряд вещей, которые могут вызвать эту ошибку. Если ваша среда

  • CentOS 7 с python3, установленным с epel-release
  • pip3 установлен вместе с python3.4 get-pip.py
  • virtualenvwrapper установлен с pip3
  • Виртуальная среда Python, созданная с помощью mkvirtualenv -p /usr/bin/python3.4

Затем по какой-то причине виртуальная среда создается без библиотеки virtualenvwrapper. Вы можете решить эту проблему, просто установив его снова, но на этот раз из virtlualenv.

[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
person drs    schedule 27.01.2016

Мне просто нужно было убедиться, что /usr/local/bin/python существует.

Для меня это было просто:

ln -s /usr/local/bin/python2.7 /usr/local/bin/python
person dustinfarris    schedule 13.08.2017

Я получаю ту же ошибку. Выяснил, что у меня старая версия pip. Я исправил ошибку, просто обновив файл pip.

person Chinmay Das    schedule 27.12.2016

Я только что установил python 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 повлияет на меня в долгосрочной перспективе, но на данный момент это работает.

person Ben    schedule 23.01.2016

У меня возникла эта проблема после удаления пакета 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. Вместо этого вам нужно purge удалить пакет virtualenvwrapper при его удалении. Вот так в Дебиане:

apt-get remove --purge virtualenvwrapper
person Mike    schedule 06.07.2016

Попробуйте удалить свои virtualenv и virtualenvwrapper и установить заново, используя pip в версии 2.7 (кажется).

Я столкнулся с той же ошибкой, и я просто сделал это и решил свою проблему.

я использую U

person manilaT    schedule 18.01.2017

Несмотря на то, что есть принятый ответ, я подумал, что поставлю то, что исправило это для меня.

Сначала я установил Python и только что обновил его через Homebrew. Я также использую ZSH, поэтому, если некоторые биты не совсем совпадают с вашим выводом, возможно, поэтому.

Запустив brew info python и просмотрев вывод, я нашел следующую полезную информацию:

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"

Поэтому я добавил это в свой сценарий запуска терминала, как показано, и ошибка больше не отображается.

Примечание. Я вставил это в другую часть моего PATH, и ошибка не исчезла при запуске.

person Skepi    schedule 23.08.2017

Столкнулся с аналогичной проблемой после установки проекта Conda/Anaconda. Этот вопрос был очень полезен при решении моей проблемы с MAC. При решении проблемы моя .zshrc соответствующая часть выглядела следующим образом:

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

Это зависит от того, где у меня установлена ​​conda, и вам придется понять это в своем собственном случае. Чтобы узнать особенности вашей среды в зависимости от того, где вы установили anaconda, вы можете использовать следующее:

$  ~/ -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

НЕ ЗАБУДЬТЕ УДАЛИТЬ И УСТАНОВИТЬ virtualenv и virtualenvwrapper, как указано в других ответах.

person ArdentLearner    schedule 22.01.2018

Только что столкнулся с этой проблемой на Centos 7.4.

Ни один из приведенных выше ответов не подходил для моего случая. Немного покопавшись, я обнаружил, что это связано со слишком строгими правами доступа к файлам в библиотеках Python (думаю, установка Python на Centos немного отличается от других систем POSIX).

Итак, если ничего не помогает, вы можете проверить, что ваши библиотеки Python доступны для чтения пользователю, с которым вы пытаетесь запустить virtualenvwrapper.

В частности, проверьте: /usr/lib/python3.6 /usr/lib64/python3.6 (измените пути для разных версий Python).

Если вы видите, что group и others не имеют прав на чтение и выполнение, добавьте их: sudo chmod og+rx -R /usr/lib/python3.6 sudo chmod og+rx -R /usr/lib64/python3.6

Примечание. Я не уверен, работает ли это против политики безопасности Centos, но, вероятно, это безопасно, если вы не даете разрешения write.

person Community    schedule 28.05.2018

В моей ситуации (OS X 10.13.6) это сделало это

brew install python2 --upgrade
person Jay    schedule 15.09.2018

У меня была та же проблема, что и у этой, и я потратил так много времени на настройку того, что не так. И я, наконец, узнал, что было не так.

Сначала я искал, где существует папка virtualenvwrapper. В моем случае /usr/local/lib/python3.7/site-packages. Внутри папки находится hook_loader.py, вызвавший ошибку.

Затем я использовал скрипт Python.

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 расширяет путь поиска модулей по умолчанию.

person MeNinLes    schedule 30.05.2019