etc./StackOverFlow

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

청렴결백한 만능 재주꾼 2021. 12. 24. 06:18
반응형

질문자 :Apreche


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 에 대한 코드를 구체적으로 다시 살펴보았고, 예, 모든 virtualenvs에서 탈출하는 방법으로 deactivate

Anaconda 환경을 벗어나려는 경우 conda 버전에 따라 다릅니다. 최신 버전(예: 4.6) conda 기능을 설치합니다. 이 경우 다음을 실행합니다.

 conda deactivate

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

 source deactivate

Brandon Rhodes

사용하다:

 $ deactivate

이것이 작동하지 않으면 시도하십시오.

 $ source deactivate

Bash source 가 어떻게 작동하는지 아는 사람은 그것이 이상하다고 생각할 것이지만 virtualenv 주변의 일부 래퍼/워크플로는 이를 source activate 대한 보완/상대 부분으로 구현합니다. 귀하의 마일리지가 다를 수 있습니다.


DarkRider

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

 alias workoff='deactivate'

기억하기 쉽습니다:

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

Bob Stein

Python 가상 환경을 활성화하려면:

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

비활성화하려면:

 $deactivate

Amitesh Ranjan

Miniconda3 환경 내에서 다음을 실행해야 함을 발견했습니다.

 conda deactivate

deactivatesource deactivate 효과가 없었습니다.


CephBirk

당신은 사용할 수 있습니다 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를 설치하는 방법에 대한 단계별 자습서입니다.


levi

~/bin/activate 를 소싱하여 생성된 deactivate ~/bin 에서 이러한 명령을 찾는 일반적인 방법으로 발견할 수 없기 때문에 deactivate 기능을 실행하는 기능을 생성하는 것이 좋습니다.

문제는 스크립트라는 점이다 deactivate 단일 명령 포함 deactivate 아니라 venv에있는 동안 실수로 실행하면 무한 루프가 발생합니다. 흔한 실수.

이것은 기능이 존재하는 경우(즉, activate deactivate 실행하여 방지할 수 있습니다.)

 #!/bin/bash declare -Ff deactivate && deactivate

DocSalvager

deactivate 사용합니다.

 (my_env) user@user:~/my_env$ deactivate user@user-Lenovo-E40-80:~/my_env$

(my_env) 가 사라졌습니다.


Basant Rules

내가 사용 zsh을-autoenv 기반으로한다 autoenv을 .

zsh-autoenv 는 일반적으로 프로젝트 루트 디렉토리에서 사용되는 .autoenv.zsh 파일을 자동으로 소싱합니다(알려진/허용 목록에 있음). "들어가기" 및 나가기" 이벤트, 중첩 및 변수 숨김(덮어쓰기 및 복원)을 처리합니다.

다음은 예입니다.

 ; cd dtree Switching to virtual environment: Development tree utiles ;dtree(feature/task24|✓); cat .autoenv.zsh # Autoenv. echo -n "Switching to virtual environment: " printf "\e[38;5;93m%s\e[0m\n" "Development tree utiles" workon dtree # eof dtree(feature/task24|✓); cat .autoenv_leave.zsh deactivate

그래서 dtree 디렉토리를 떠나면 가상 환경이 자동으로 종료됩니다.

"Development tree utiles" 는 이름에 불과합니다. 여기에 Illuminati와 연결되는 숨겨진 의미는 없습니다.


Sardathrion - against SE abuse

venv의 activate deactivate 기능을 사용하려면 비활성화 기능이 올바르게 코딩 되어 모든 환경 변수를 원래 활성화 뿐만 아니라 모든 스위치 , 구성 , 또는 그동안 수행했을 수 있는 다른 작업.

아마도 괜찮을지 모르지만 나중에 환경이 수정될 위험이 0이 아닌 새로운 위험을 초래합니다.

그러나 프로세스가 부모의 환경 변수를 직접 변경하는 것은 기술적으로 불가능 하므로 별도의 하위 셸을 사용하여 venv 가 잔여 변경 사항을 남기지 않도록 할 수 있습니다.


활성화하려면:

$ bash --init-file PythonVenv/bin/activate

  • venv 주위에 새로운 쉘을 시작합니다. 원래 bash 셸은 수정되지 않은 상태로 유지됩니다.

비활성화하려면:

$ exit 또는 [CTRL] + [D]

  • venv 가 있는 전체 셸이 종료되고 활성화 스크립트가 환경을 변경하기 전의 원래 셸로 돌아갑니다.

예시:

 [user@computer ~]$ echo $VIRTUAL_ENV No virtualenv! [user@computer ~]$ bash --init-file PythonVenv/bin/activate (PythonVenv) [user@computer ~]$ echo $VIRTUAL_ENV /home/user/PythonVenv (PythonVenv) [user@computer ~]$ exit exit [user@computer ~]$ echo $VIRTUAL_ENV No virtualenv!

Will Chen

Python 가상 환경을 활성화하려면:

 source venv/bin/activate

참고: 여기서 "venv"는 virtualenvironment 폴더 이름입니다.

비활성화하려면:

 `deactivate` or `source deactivate`

Ruhul Amin

deactivate [name of your environment] 실행하면 Python 환경에서 종료/비활성화할 수 있습니다.

python3.6 Windows 10의 예:

 PS C:\Users\kyrlon\Desktop> py -m venv env1 PS C:\Users\kyrlon\Desktop> .\env1\Scripts\activate (env1) PS C:\Users\kyrlon\Desktop> deactivate env1 PS C:\Users\klongwood3\Desktop> py -m venv env1

Linux Ubuntu 20.04 LTS 데스크탑에서 python3.9를 사용한 예:

 kyrlon@pc1:~$ python3 -m venv venv1 kyrlon@pc1:~$ source venv1/bin/activate (venv1) kyrlon@pc1:~$ deactivate venv1 kyrlon@pc1:~$

kyrlon

내 특별한 경우에는 작업 디렉토리로 이동합니다.

 CD /myworkingdirectory

그런 다음 내 환경을 다음과 같이 활성화합니다.

 my-env/scripts/activate

이 동일한 작업 폴더( /myworkingdirectory )에서 비활성화하기 위해 이것을 시도했지만 아무 것도 하지 않습니다.

 my-env/scripts/deactivate

이것은 작동합니다:

 deactivate

Nick.McDermaid

deactivate 또는 source deactivate 가 작동하지 않는 경우 비활성화하는 방법을 알아내려고 하는 사람이 있으면 다음을 입력하십시오.

deactivate <virtual environment name>

나를 위해 매력처럼 일했습니다!


Jayant Nigam

설치 프로그램 스크립트에서 작업하는 동안 동일한 문제가 발생했습니다. 나는 bin/activate_this.py 가 한 일을 살펴보고 그것을 뒤집었습니다.

예시:

 #! /usr/bin/python # -*- coding: utf-8 -*- import os import sys # Path to virtualenv venv_path = os.path.join('/home', 'sixdays', '.virtualenvs', 'test32') # Save old values old_os_path = os.environ['PATH'] old_sys_path = list(sys.path) old_sys_prefix = sys.prefix def deactivate(): # Change back by setting values to starting values os.environ['PATH'] = old_os_path sys.prefix = old_sys_prefix sys.path[:0] = old_sys_path # Activate the virtualenvironment activate_this = os.path.join(venv_path, 'bin/activate_this.py') execfile(activate_this, dict(__file__=activate_this)) # Print list of pip packages for virtualenv for example purpose import pip print str(pip.get_installed_distributions()) # Unload pip module del pip # Deactivate/switch back to initial interpreter deactivate() # Print list of initial environment pip packages for example purpose import pip print str(pip.get_installed_distributions())

의도한 대로 작동하는지 100% 확신할 수 없습니다. 내가 뭔가를 완전히 놓쳤을 수도 있습니다.


Lord Sumner

출처 : http:www.stackoverflow.com/questions/990754/how-to-leave-exit-deactivate-a-python-virtualenv

반응형