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


79

Я использую 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

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


4
Вы видите ли это , или вы можете попробовать другой путьeasy_install
восхищаться

Спасибо. Посмотрел пост. Но мне не удается установить 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 in / Библиотека / Python / 2.6 / site-packages / virtualenv-1.6-py2.6.egg Очистка ...
Томас Креммель

Я просто смотрел virtualenv в статус , и это не выглядит , как она поддерживает Py 2,7.
Мартино

2
Просто примечание - я затронул эту проблему в другом случае. Я начал делать virtualenv через, mkvirtualenvа затем остановил его (с Ctrl+C). При повторной попытке сделать virtualenv остались некоторые остатки с прошлого раза. Я зашел в свою папку envs и удалил не полностью созданную среду. После этого та же mkvirtualenvкоманда работала исправно.
driftcatcher

2
Комментарий Ибо Янга был уместен и при моей установке Ubuntu. Только будьте осторожны с орфографией ... выше должно быть экспорт VIRTUALENVWRAPPER_PYTHON = / usr / bin / python3 с буквой "v" в VIRTUALENVWRAPPER
Кевин

Ответы:


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

Измените порядок команды экспорта так, чтобы она располагалась перед командами 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

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

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

sudo easy_install-2.7 pip

pip install virtualenv

1
Спасибо - после обновления моей установки Python 2.7 на Mac Mountain Lion у меня была та же проблема, и это исправило ее.
А. Джесси Джирью Дэвис 03

3
В Mountain Lion уловка для меня заключалась в том, чтобы ПУТЬ для / opt / local / bin был установлен ПЕРЕД строкой source ... Мне не пришлось связываться со ссылками на OSX Python в / usr / bin или чем-либо еще. Также WORKON_HOME теперь по умолчанию, если не установлен в $ HOME / .virtualenvs
Марк

4
+1 за комментарий @Mark. Также для пользователей пивоварни: фактический путь - usr/local/Cellar/python/<PYTHON-VERSION>/bin/.
rsenna

Спасибо, это помогает мне после компиляции python 2.7.4 в Debian.
Zulu

В моем случае проблема возникла только из-за того, что я пытался удаленно войти на другую машину. Подсказка, это означает, что проблема не на локальном компьютере, а на компьютере, в который вы входите! Подумал, что упомяну об этом на случай, если кто-то окажется в этом месте.
smileBot

23

Кроме того, если у вас есть 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`

4
Я устанавливаю python3 вместе с моей ОС python2, и установка VIRTUALENVWRAPPER_PYTHONрешила мою проблему.
Johan Gov

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 05

в моем bash_profile,export VIRTUALENVWRAPPER_PYTHON="which python3"
Фай Зал Донг

8

Для всех, кто использует Ubuntu 18.04 и Python 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. Вероятно, это сломалось, когда я обновил установку Python.

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

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

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


3

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

  • 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

2

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

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

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

1

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


0

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


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

apt-get remove --purge virtualenvwrapper

0

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

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

Я использую U


0

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

Сначала я установил 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"

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

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


0

Возникла аналогичная проблема после установки проекта 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, как указано в других ответах.


0

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


0

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

brew install python2 --upgrade

0

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

Сначала я поискал, где находится папка 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 увеличивает путь поиска по умолчанию для модулей.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.