Virtualenv и virtualenvwrapper, похоже, не работают
Несколько месяцев назад я установил virtualenv
, virtualenvwrapper
а также pip
, создал несколько виртуальных сред и успешно играл с Django.
Вернувшись сегодня к своим проектам, я не могу использовать ни одну из этих команд. Например:
/> lsvirtualenv
возвращает:
/>
В дальнейшем:
/> работа
также возвращает:
/>
В чем может быть причина этого? скоросшиватель .virtualenv
находится здесь /users/myUser/documents/projects/.virtualenvs
и его содержание:
get_env_details
postactivate
postmkproject
postrmvirtualenv
predeactivate
premkvirtualenv
initialize
postdeactivate
postmkvirtualenv
preactivate
premkproject
prermvirtualenv
Что мне не хватает? Спасибо!
1 ответ
Эти команды генерируются скриптом virtualenvwrapper.sh
, Вы должны получить этот файл, чтобы получить команды.
Попробуй это:
find / -name "virtualenvwrapper.sh" 2>/dev/null
Он должен найти и вернуть путь к файлу. В моей системе это:
/usr/share/virtualenvwrapper/virtualenvwrapper.sh
Так что вы можете сделать:
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
Теперь у вас должны быть команды. Возможно, вы хотели бы иметь эти команды без источников virtualenvwrapper.sh
каждый раз, когда вы загружаете свою систему.
Добавьте эту строку в свой .bashrc
(или в качестве альтернативы в .bash_profile
или же .profile
) вместе с двумя другими строками
export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Projects
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
После этого создайте каталог Projects
(вы можете называть это как хотите и помещать туда, куда хотите) вручную:
mkdir $HOME/Projects
После следующего запуска у вас должны быть все команды и новые переменные среды. Когда вы делаете:
mkproject foo
Будет создан новый каталог foo:
.virtualenvs/foo
а также:
Projects/foo
Первый - ваша виртуальная среда, второй - место, где живут ваши проекты. С workon foo
Вы можете активировать его, и с cdvirtualenv
а также cdproject
Вы можете переключаться между ними.
РЕДАКТИРОВАТЬ:
Перечитав ваш вопрос, я думаю, что в конечном итоге проблема может быть связана с тем, как вы создавали виртуальные среды.
Команды lsvirtualenv
а также workon
предоставляются virtualenvwrapper
, Если вы создаете свои виртуальные среды с помощью команды mkvirtualenv
(также предоставлено virtualenvwrapper
) затем lsvirtualenv
а также workon
перечислю их.
Но если вы создадите их так:
virtualenv foo
virtualenvwrapper
не будет знать о ваших виртуальных средах.