virtualenv로`--no-site-packages` 옵션을 되돌립니다.


126

--no-site-packages옵션을 사용하여 virtualenv를 만들고 많은 라이브러리를 설치했습니다. 이제 --no-site-packages옵션 을 되돌리고 전역 패키지도 사용하고 싶습니다 .

virtualenv를 다시 만들지 않고 그렇게 할 수 있습니까?

더 정확하게:

해당 옵션을 사용하지 않고 옵션을 사용하여 virtualenv를 만들 때 정확히 어떤 일이 발생 하는지 궁금합니다 --no-site-packages.

어떤 일이 발생하는지 알면 실행 취소 방법을 알아낼 수 있습니다.


다른 질문 은이 질문 과 중복으로 표시되었으며 여기에서도 흥미로운 답변을 받았습니다.
mariotomo

답변:


162

가상 환경 no-global-site-packages.txtLib폴더에서 파일 을 제거하거나 이름을 바꾸 십시오.

여기서 venv 는 가상 환경의 이름이며 python3.4 는 관련된 Python 버전에 해당합니다 (예 :

$ rm venv/lib/python3.4/no-global-site-packages.txt

그리고 당신이 마음을 바꾸고 그것을 다시 넣고 싶다면 :

$ touch venv/lib/python3.4/no-global-site-packages.txt

참고 : 위 파일이 표시되지 않으면 최신 버전의 virtualenv가있는 것입니다. 대신 이 답변 을 따르고 싶을 것입니다


18
그렇게 할 것입니다. 해당 파일의 존재 (또는 존재하지 않는)는 no-site-packages 플래그의 유일한 직접적인 영향입니다. Virtualenv의 사용자 정의 된 site.py는 해당 파일을 찾아 전역 사이트 패키지 디렉토리를 sys.path에 추가할지 여부를 결정합니다.
Carl Meyer

훌륭한! 그랬어! 그 답변에 대해 많은 감사를 표하고 추가 의견에 대해 Carl Meyer에게 감사드립니다.
올리비에 베르디

1
그것은 virtualenv/python2.7/no-global-site-packages.txt내 우분투 서버에 있습니다.
caesarsol

4
virtualenv의 Windows 버전에 virtualenv/pyenv.cfg파일이 있습니다. :이 사이트 패키지에 대한 하나의 옵션은 include-system-site-packages = false 변경이 값과 Activate.ps1 전화
georgik

@georgik-Linux 버전의 venvfor 에서도 작동 합니다 Python 3.4.
Tomasz Dzieniak

13

적어도 Python 3.5.2 pyvenv.cfg의 경우 virtualenv 디렉토리의 루트에 파일 이 있습니다. include-system-site-packages플래그 falsetrue다음 으로 변경하기 만하면 됩니다 .

home = /usr/bin
include-system-site-packages = false  # <- change this to "true"
version = 3.5.2


2

/virtualenv_root/lib/와 사이에 심볼릭 링크를 추가하십시오/path/to/desired/site-packages/


+1 이것은 내 시스템에서 작동합니다 (openSUSE Linux 12.3, Python 2.7.3, virtualenv 1.8.4). 나는 no-global-site-packages.txt어디에도 없다 .
Aaron Digulla

2

venv 폴더로 이동하여을 엽니 다 pyvenv.cfg. (예 : 가상 환경이 호출 myenv되면 파일은에 위치 함 myenv\pyvenv.cfg)

부울 설정이 표시됩니다. include-system-site-packages

해당 설정을 true글로벌 패키지를 사용하도록 하십시오.

글로벌 패키지를 사용하지 않으려면 해당 설정을 false대신 설정하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.