Я использую virtualenv и virtualenvwrapper. Я могу переключаться между virtualenv просто отлично, используя workon
команду.
me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$
Как мне выйти из всех виртуальных машин и снова работать на моей реальной машине? Прямо сейчас единственный способ вернуться к нему me@mymachine:~$
- выйти из оболочки и запустить новый. Это немного раздражает. Есть ли команда для работы над «ничем», и если да, то что это? Если такой команды не существует, как бы я ее создал?
python
virtualenv
virtualenvwrapper
Apreche
источник
источник
Ответы:
Обычно, активируя virtualenv, вы получаете функцию оболочки с именем:
что возвращает вещи в норму.
Я только что специально посмотрел на код для
virtualenvwrapper
, и, да, он тоже поддерживаетdeactivate
как способ убежать от всех virtualenvs.Если вы пытаетесь покинуть среду Anaconda , команда зависит от вашей версии
conda
. Последние версии (например, 4.6) устанавливаютconda
функцию прямо в вашей оболочке, в этом случае вы запускаете:Старые версии conda вместо этого реализуют деактивацию с помощью автономного скрипта:
источник
virtualenvwrapper
и, возможно, Даг Хеллманн рассмотрел бы это! Обратите внимание, для тех , кто может читать эти комментарии позже, чтоworkon
это НЕ роднойvirtualenv
команды (что исходный вопрос о) , ноvirtualenvwrapper
команда!Я определил псевдоним , workoff , как противоположность workon :
Это легко запомнить:
источник
.bashrc
?~/.bashrc
Использование:
Если это не работает, попробуйте
Любой, кто знает, как работает Bash
source
, подумает, что это странно, но некоторые оболочки / рабочие процессы вокруг virtualenv реализуют его как дополнение / аналогsource activate
. Ваш пробег может варьироваться.источник
deactivate
это функция, которая создается при исходномactivate
файле. Ваше предложение сделатьsource deactivate
не имеет никакого смысла, так как нет файла с именемdeactivate
Чтобы активировать виртуальную среду Python:
Чтобы деактивировать:
источник
$source activate
$cd /to/dir/i/want/my/virtualenv/installed
то$virtualenv name_i_want_for_it
тогда$. name_i_want_for_it/bin/activate
virtualenv все еще кажется , немного не ко мне.Я обнаружил, что в среде Miniconda3 мне нужно было запустить:
Ни у меня,
deactivate
ниsource deactivate
у меня не получалось.источник
deactivate
был дляvirtualenv
, иsource deactivate
для старой Конды на Linux.conda deactivate
хороший кроссплатформенный способ для conda envs (не virtualenvs)Вы можете использовать
virtualenvwrapper
, чтобы облегчить работуvirtualenv
.Установка
virtualenvwrapper
:Если вы используете стандартную оболочку, откройте
~/.bashrc
или,~/.zshrc
если вы используете Oh My Zsh . Добавьте эти две строки:Чтобы активировать существующий virtualenv, используйте команду
workon
:Для того, чтобы деактивировать ваше virtualenv:
Вот мой учебник , шаг за шагом о том, как установить virtualenv и virtualenvwrapper.
источник
workon
команду, она работает из любого каталога.deactivate
в сценарии оболочки без предварительного поиска сценария, который определяет эту функцию (в этом случае у вас будет эта команда не найдена). . ошибка)Поскольку
deactivate
функция, созданная с помощью источника,~/bin/activate
не может быть обнаружена обычными средствами поиска такой команды~/bin
, вы можете создать такую, которая просто выполняет функциюdeactivate
.Проблема в том, что скрипт с именем
deactivate
содержит одну командуdeactivate
, вызовет бесконечный цикл, если он будет случайно выполнен, когда он не находится в venv. Распространенная ошибка.Этого можно избежать, только выполнив,
deactivate
если функция существует (то есть была создана с помощью источникаactivate
).источник
Использование
deactivate
.Обратите внимание,
(my_env)
ушел.источник
Я использую zsh-autoenv, который основан на autoenv .
Вот пример:
Поэтому, когда я покидаю
dtree
каталог, виртуальная среда автоматически закрывается."Development tree utiles"
это просто имя ... Никакой скрытой ссылки на иллюминатов здесь.источник
Использование
deactivate
функции, предоставляемой сценарием venv,activate
требует от вас правильного кодирования функции деактивации для точного сброса всех переменных среды обратно в прежнее состояние, принимая во внимание не только исходную активацию , но также любые переключатели , конфигурацию или другие работа, которую вы, возможно, сделали за это время.Это, вероятно, хорошо, но это вносит новый ненулевой риск оставить вашу среду измененной впоследствии.
Однако технически невозможно, чтобы процесс напрямую изменил переменные окружения своего родителя, поэтому мы можем использовать отдельную вложенную оболочку, чтобы быть абсолютно уверенными, что наши
venv
s не оставляют никаких остаточных изменений:Активировать:
$ bash --init-file PythonVenv/bin/activate
venv
. Ваша оригинальнаяbash
оболочка остается неизменной.Чтобы деактивировать:
$ exit
ИЛИ[CTRL]
+[D]
venv
и возвращает вас к исходной оболочке до того, как скрипт активации внесет какие-либо изменения в среду.Пример:
источник
У меня была такая же проблема при работе над установочным скриптом. Я взглянул на то, что сделал bin / activ_this.py , и перевернул его.
Пример:
Я не уверен на 100%, работает ли он так, как задумано. Возможно, я что-то пропустил полностью.
источник