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 не будет знать о ваших виртуальных средах.

Другие вопросы по тегам