Вопрос по python, virtualenv, virtualenvwrapper – Python Virtualenv - нет модуля с именем virtualenvwrapper.hook_loader

69

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

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

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

Ваш Ответ

15   ответов
50

Проблема была решена, выполнив следующие действия:

#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
+1 за комментарий @Mark. Кроме того, для пользователей Brew: фактический путьusr/local/Cellar/python/<PYTHON-VERSION>/bin/.
Спасибо - после обновления установки Python 2.7 на Mac Mountain Lion у меня возникла та же проблема, и это исправило.
Спасибо, это помогает мне после компиляции Python 2.7.4 в Debian.
На Mountain Lion уловка для меня заключалась в том, чтобы PATH для / opt / local / bin был установлен ДО строки source .... Мне не приходилось связываться со ссылками на OSX Python в / usr / bin или чем-то еще. Также WORKON_HOME теперь по умолчанию, если не установлено в $ HOME / .virtualenvs
В моем случае проблема произошла только из-за того, что я пытался удаленно войти на другую машину. Подсказка: это означает, что проблема не в локальной машине, а в машине, на которую вы входите! Думаю, я упомяну это на тот случай, если кто-то окажется в этом месте.
0

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

brew install python2 --upgrade
1

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

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

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

0

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

The solution was to delete the /etc/bash_completion.d/virtualenvwrapper file.

Edit:

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

apt-get remove --purge virtualenvwrapper
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, как отмечено в других ответах.

3

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

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

Download the get-pip.py script (directly linked from pip's documentation). Run python get-p,ip.py.

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

0

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

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

Я использую U

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

2

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

CentOS 7, with python3 installed from epel-release pip3 installed with python3.4 get-pip.py virtualenvwrapper installed with pip3 A python virtual environment made with 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
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 persmisions.

0

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

Сначала я установил Python и только что обновил егоvia 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, и ошибка сохранилась при запуске.

2

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

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

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

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

export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/2.7.13/bin/python2.7
export VIRTUALENVWRAPPER_PYTHON=/usr/local/Cellar/python/3.6.5/bin/python3.6 для последней версии.
19

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

export VIRTUALENVWRAPPER_PYTHON=`which python`
export VIRTUALENVWRAPPER_VIRTUALENV=`which virtualenv`
source `which virtualenvwrapper.sh`
Я устанавливаю python3 вместе с моим os python2 и настраиваюVIRTUALENVWRAPPER_PYTHON решил мою проблему.

Похожие вопросы