Подтвердить что ты не робот

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

Затем я запускаю команду для установки нового virtualenv с помощью 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

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

4b9b3361

Ответ 1

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

#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

Ответ 2

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

Ответ 3

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

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

Ответ 4

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

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

  • Загрузите get-pip.py script (напрямую связанный с документацией pip).
  • Запустите python get-pip.py.

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

Ответ 5

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

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

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

[[email protected] ~] $ 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)[[email protected] ~] $ pip install virtualenvwrapper

Ответ 6

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

Ответ 7

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

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

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

Ответ 8

Я только что установил python 3.5, попробовал virtualenvwrapper, а затем возникла эта проблема. Я понял, что python3.5 был установлен в /usr/local/bin/python3.5 и NOT /usr/bin/python3.5. Итак, я пересмотрел свой .bash_profile script, чтобы выглядеть следующим образом, и все, кажется, работает сейчас

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

Ответ 9

У меня была эта проблема после удаления пакета 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.

Edit:

Не удаляйте вышеуказанный файл или он не будет воссоздан, если вы переустановите virtualenvwrapper. Вместо этого вам нужно сделать purge пакет virtualenvwrapper при его удалении. Как это на Debian:

apt-get remove --purge virtualenvwrapper

Ответ 10

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

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

Я использую U

Ответ 11

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

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

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

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

Итак, я добавил это к моему запуску терминала script, как показано, и пока не появится ошибка n.

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