Изменение каталога не происходит с setvirtualenvproject

Я использую VirtualEnvWrapper, и мне очень нравится то, что я вижу. Однако, когда я пытаюсь начать работу, я не вижу ожидаемого поведения при попытке настроить ассоциацию каталога проекта с виртуальными средами.

Я установил virtualenv и -wrapper. Я могу создавать envs и "workon" перечисляет их в порядке. Я могу деактивировать и rm их счастливо. Так что все выглядит функционально. Я прочитал документацию по управлению проектом. (Также хорошее видеоруководство и объяснение желаемого поведения ассоциации proj на 10: 39 )

Когда я пытаюсь связать рабочий каталог с env, он отлично принимает мои cmds, но когда я «работаю» над проектом, он не помещает меня в назначенный мне рабочий каталог.

например У меня есть рабочая область ~/Ross_code (и я установил ее в своем .bashrc как $PROJECT_HOME). Там есть существующая папка проекта ~/Ross_code/superproj

Итак, теперь я создаю env с

mkvirtualenv superp

Затем я иду в свой существующий каталог проекта и связываю его с env:

cd ~/Ross_code/superproj 
setvirtualenvproject
Setting project for superp to /Users/ross/Ross_code/superproj

Затем я вышел из виртуальной среды с помощью «деактивировать» и повторно активировал с помощью

workon superp

Но текущий рабочий каталог остается моей папкой ~/.
Я проверил файл .project, который, кажется, был правильно установлен вызовом setvirtualenvproject:

cdvirtualenv
more .project
/Users/ross/Ross_Code/superproj

но вызов «workon» никогда не приводит меня в ожидаемое место. Я думал, что env и каталог проекта должны иметь одно и то же имя, но это тоже не имело никакого значения.

Любая идея, почему эта очень привлекательная возможность ассоциации проектов не работает для меня?

-Росс.

ПОЗЖЕ. Дополнительная информация: я пытался также использовать команду mkproject, которая должна создать каталог для моего кода в области $PROJECT_HOME, одновременно создать виртуальную среду и связать их друг с другом.

Вызов

mkproject junkproj

на самом деле прекрасно создает каталог проекта и втыкает меня в virtualenv, а cd - в каталог Junkproj. Но когда я деактивирую, а затем снова «работаю над ненужным проектом», я все еще остаюсь в своем каталоге ~/, а не иду в каталог проекта в $PROJECT_HOME.

:(


person RossGK    schedule 19.01.2015    source источник


Ответы (2)


Проблема здесь в том, что более новые версии (это поразило меня при обновлении с Ubuntu 14.04 до 16.04) virtualenvwrapper используют немного другой протокол для параметров setvirtualenvproject:

setvirtualenvproject [virtualenv_path project_path]

Чтобы создать нужную ассоциацию в любой виртуальной среде, перейдите в папку проекта и виртуальную среду и используйте:

setvirtualenvproject $VIRTUAL_ENV .

Точка для текущего каталога - или вы можете использовать путь к каталогу, в который вы хотите, чтобы workon переместил вас. Как только вы это сделаете, workon переключит вас на нужную папку, а cdproject будет работать как положено.

Если вы использовали старый протокол, у вас будет файл .project в папке вашего проекта — вы можете переместить его в папку $VIRTUAL_ENV, а не вызывать команду с новым протоколом для создания ассоциации. Файл просто содержит каталог проекта, который вы хотите связать с командами быстрого доступа virtualenvwrapper, такими как workon и cdproject.

person Paul Whipp    schedule 05.09.2016
comment
Я почти сдался, но оказалось, что я каким-то образом создал виртуальную среду в каталоге проекта. После удаления этого мошеннического каталога этот метод setvirtualenvproject сделал свое дело. - person fbicknel; 14.05.2019

workon не изменяет каталог автоматически на каталог проекта или среды. Вы можете сделать это с помощью скрипта postactivate — во второй половине раздел советов и рекомендаций по virtualenvwrapper.

person RedCraig    schedule 19.01.2015
comment
Это выглядит полезным. Но из дальнейшего чтения это звучит так, как будто это поведение расширения проекта, которое вызывалось вручную (т. е. советы и рекомендации), прежде чем было позже поглощено virtualenvwrapper, начиная с версии 2.9. Но поведение могло снова измениться позже. Я только что обнаружил cdproject cmd, который ДЕЛАЕТ переключение на рабочий каталог. Хотел бы я найти примечания к выпуску, в которых говорилось бы, было ли позже изменено поведение расширений proj. - person RossGK; 20.01.2015
comment
Есть новости по этому поводу? Борьба с той же проблемой. - person Brutus; 11.12.2016
comment
@Brutus: ответ @Paul Whipp ниже правильный. virtualenvwrapper поддерживает проекты, если вы добавите каталог своего проекта, workon автоматически изменит каталог на него. - person RedCraig; 25.01.2017