[python] Python virtualenv를 종료 / 종료 / 비활성화하는 방법

virtualenv와 virtualenvwrapper를 사용하고 있습니다. workon명령을 사용하여 virtualenv를 잘 전환 할 수 있습니다 .

me@mymachine:~$ workon env1
(env1)me@mymachine:~$ workon env2
(env2)me@mymachine:~$ workon env1
(env1)me@mymachine:~$ 

모든 가상 머신을 종료하고 실제 머신에서 다시 작업하려면 어떻게해야합니까? 지금 당장 내가 얻는 유일한 방법 me@mymachine:~$은 쉘을 종료하고 새로운 쉘을 시작하는 것입니다. 그것은 성가신 종류입니다. “아무것도”에 대해 작동하는 명령이 있습니까? 그렇다면 무엇입니까? 그러한 명령이 존재하지 않으면 어떻게 작성합니까?



답변

일반적으로 virtualenv를 활성화하면 다음과 같은 이름의 쉘 함수가 제공됩니다.

$ deactivate

상황을 정상으로 되돌립니다.

방금 코드를 다시 살펴 보았습니다 virtualenvwrapper. 그렇습니다 deactivate. 모든 virtualenv에서 벗어날 수있는 방법으로 도 지원합니다 .

Anaconda 환경 을 떠나려고하는 경우 명령은 버전에 따라 다릅니다 conda. 4.6과 같은 최신 버전 conda은 쉘에 직접 함수를 설치합니다 .이 경우 다음을 실행합니다.

conda deactivate

이전 버전의 conda 버전은 독립형 스크립트를 사용하여 비활성화를 구현합니다.

source deactivate


답변

나는 정의 별칭 , workoff을 반대로, workon :

alias workoff='deactivate'

기억하기 쉽습니다.

[bobstein@host ~]$ workon django_project
(django_project)[bobstein@host ~]$ workoff
[bobstein@host ~]$


답변

사용하다:

$ deactivate 

그래도 문제가 해결되지 않으면

$ source deactivate

Bash의source 작동 방식을 아는 사람 은 이상하다고 생각하지만 virtualenv 주변의 일부 래퍼 / 워크 플로우는이를 보완 / 대응으로 구현합니다 source activate. 귀하의 마일리지가 다를 수 있습니다.


답변

Python 가상 환경을 활성화하려면 다음을 수행하십시오.

$cd ~/python-venv/
$./bin/activate

비활성화하려면 :

$deactivate


답변

Miniconda3 환경에서 다음을 실행해야한다는 것을 알았습니다.

conda deactivate

나도 일 하지 deactivate않았다 source deactivate.


답변

virtualenvwrapper작업 방식을 쉽게하기 위해 사용할 수 있습니다 virtualenv.

설치 virtualenvwrapper:

pip install virtualenvwrapper

표준 쉘을 사용하는 경우 ~/.bashrc또는 Oh My Zsh~/.zshrc 를 사용하는 경우를여 십시오 . 다음 두 줄을 추가하십시오.

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

기존 virtualenv를 활성화하려면 workon다음 명령을 사용하십시오 .

$ workon myenv
(myenv)$

virtualenv를 비활성화하려면 다음을 수행하십시오.

(myenv)$ deactivate

다음은 virtualenv 및 virtualenvwrapper를 설치하는 방법에 대한 단계별 자습서 입니다.


답변

이후 deactivate소싱에 의해 생성 기능이 ~/bin/activate이러한 명령을 찾는 일반적인 방법으로 발견 할 수없는 ~/bin, 당신은 단지 기능을 실행을 만들 수도 있습니다deactivate .

문제는 deactivate단일 명령 deactivate을 포함하는 이름의 스크립트 가 venv에 있지 않은 동안 실수로 실행될 경우 무한 루프를 발생 시킨다는 것입니다. 흔한 실수입니다.

이것은 deactivate함수가 존재 하는 경우 에만 실행하여 피할 수 있습니다 (즉, 소싱하여 생성 activate).

#!/bin/bash

declare -Ff deactivate  && deactivate