Нет модуля с именем "virtualenvwrapper"
Я работаю над созданием проекта Django на Amazon EC2 с экземпляром LTS Ubuntu 14.04. Я хочу написать свой код с помощью Python 3. Мне сообщили, что лучший способ сделать это - использовать virtualenvwrapper
. Я установил virtualenvwrapper
успешно и поместил
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.4
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh
в мой файл .bashrc
. Теперь я вижу:
/usr/bin/python3.4: Error while finding spec for 'virtualenvwrapper.hook_loader' (<class 'ImportErro
r'>: No module named 'virtualenvwrapper')
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3.4 and that PATH is
set properly.
Как я могу это исправить?
Ответы
Ответ 1
Вместо указания другого интерпретатора python с флагом -p
вы также можете настроить желаемый интерпретатор по умолчанию.
Согласно virtualenvwrapper
документации, virtualenvwrapper.sh
находит первые python
и virtualenv
программы на $PATH
и помнит, как их использовать позже.
Если ваш virtualenvwrapper
не установлен в интерпретаторе python по умолчанию для ОС (/usr/bin/python
), убедитесь, что вы переопределите переменные среды, как показано ниже:
-
VIRTUALENVWRAPPER_PYTHON
до полного пути вашего интерпретатора python
-
VIRTUALENVWRAPPER_VIRTUALENV
до полного пути к virtualenv
Например, на моем .bash_profile
(Mac):
#virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/Library/Frameworks/Python.framework/Versions/3.5/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/Library/Frameworks/Python.framework/Versions/3.5/bin/virtualenv
source /Library/Frameworks/Python.framework/Versions/3.5/bin/virtualenvwrapper.sh
Перезагрузите новые переменные, запустив source ~/.bash_profile
Ответ 2
Следуя совету Джона, я побежал:
[email protected]:~$ mkvirtualenv -p /usr/bin/python3.4 env1
Running virtualenv with interpreter /usr/bin/python3.4
Using base prefix '/usr'
New python executable in env1/bin/python3.4
Also creating executable in env1/bin/python
Installing setuptools, pip...done.
(env1)[email protected]:~$ deactivate
[email protected]:~$ ls
[email protected]:~$ ls -a
. .. .bash_history .bash_logout .bashrc .cache .pip .profile .ssh .virtualenvs
[email protected]:~$ workon
env1
[email protected]:~$ workon env1
(env1)[email protected]:~$ which python
/home/ubuntu/.virtualenvs/env1/bin/python
(env1)[email protected]:~$ python -V
Python 3.4.0
Я оставил .bashrc, как указано выше. Как сказал Джон выше, установка virtualenvwrapper устанавливает на python по умолчанию и использует python по умолчанию в любом виртуальном каталоге, который вы создаете, если только флаг -p не используется для указания другого интерпретатора python.
Спасибо, Джон!
Ответ 3
Если вы используете brew для установки python, вам нужно убедиться, что вы установили эту переменную среды:
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
в вашем файле bash_profile (или какой-либо другой оболочке, которую вы используете).