virtualenv --no-site-discovery와 pip은 여전히 글로벌 패키지를 찾고 있습니까?
저는 그런 생각을 하고 있었습니다.virtualenv --no-site-packages
완전히 분리되고 격리된 Python 환경을 만들 것이지만 그렇게 보이지는 않습니다.
예를 들어, 저는 글로벌하게 python-django를 설치했지만, 다른 django 버전을 사용하여 가상 환경을 만들고 싶습니다.
$ virtualenv --no-site-packages foo
New python executable in foo/bin/python
Installing setuptools............done.
$ pip -E foo install Django
Requirement already satisfied: Django in /usr/share/pyshared
Installing collected packages: Django
Successfully installed Django
가 봤을 가제볼때,때.pip -E foo install
위에 있는 것은 새로운 버전의 장고를 다시 설치하는 것입니다.또한, 제가 pip에게 환경을 동결하라고 말하면, 저는 많은 소포를 받습니다.나는 그것이 새로운 환경을 위한 것이라고 기대합니다.--no-site-packages
이것이 비어있을까요?
$ pip -E foo freeze
4Suite-XML==1.0.2
BeautifulSoup==3.1.0.1
Brlapi==0.5.3
BzrTools==1.17.0
Django==1.1
... and so on ...
내가 어떻게 오해하고 있습니까?--no-site-packages
효과가 있을까요?
(가상 환경을 발견하기 훨씬 전에) .bashrc 파일의 PYONPATH에 디렉터리를 추가했다는 것을 깨닫기 전까지는 이러한 문제가 있었습니다.1년이 넘었기 때문에, 저는 그것을 바로 생각하지 못했습니다.
▁the▁running를 실행하고 있는지 .pip
생성한 가상 환경의 이진 파일입니다. 글로벌 환경이 아닙니다.
env/bin/pip freeze
테스트 보기:
는 를 만듭니다.--no-site-packages
옵션:
$ virtualenv --no-site-packages -p /usr/local/bin/python mytest
Running virtualenv with interpreter /usr/local/bin/python
New python executable in mytest/bin/python
Installing setuptools, pip, wheel...done.
는 의출을확다니의 을 확인합니다.freeze
로새창된것터부로으조▁the▁from터부에서.pip
:
$ mytest/bin/pip freeze
argparse==1.3.0
wheel==0.24.0
하지만 만약 우리가 글로벌을 사용한다면,pip
우리가 얻는 것은 다음과 같습니다.
$ pip freeze
...
pyxdg==0.25
...
range==1.0.0
...
virtualenv==13.1.2
즉, 모패지가가 되는 모든 입니다.pip
가 전체 시스템에 설치되었습니다.를 으로써.which pip
우리는 (적어도 나의 경우에는) 비슷한 것을 얻습니다./usr/local/bin/pip
가 할 때.pip freeze
대신에 이 이진수를 부르고 있습니다.mytest/bin/pip
.
결국 저는 어떤 이유로든 PIP-E가 작동하지 않는다는 것을 알게 되었습니다.그러나 실제로 virtualenv를 활성화하고 virtualenv에서 제공하는 easy_install을 사용하여 pip을 설치한 다음 내부에서 직접 pip을 사용하면 예상대로 작동하고 virtualenv의 패키지만 표시됩니다.
으로 시적으삭을 .PYTHONPATH
매개 변수:
export PYTHONPATH=
그런 다음 가상 환경을 생성하고 활성화합니다.
virtualenv foo
. foo/bin/activate
그 때만:
pip freeze
이것이 매우 오래된 질문이라는 것을 알지만 해결책을 찾고 있는 사람들을 위해:
가상 환경을 활성화하는 것을 잊지 마십시오.source bin/activate
에 ) 참조하십시오.pip freeze
그렇지 않으면 모든 글로벌 패키지 목록이 표시됩니다.
--no-site-packages
알 수 에서 제거해야 합니다.sys.path
표준 Python 경로에 있는 다른 모든 것은 그곳에 남아 있을 것입니다.
스크립트를 직접 호출하는 경우 윈도우즈에서도 유사한 문제가 발생할 수 있습니다.script.py
그런 다음 윈도우즈 기본 오프너를 사용하고 가상 환경 외부에서 Python을 엽니다. 기르께기로 부르기python script.py
가상 환경에서 Python을 사용합니다.
이 문제는 virtualenv 디렉토리를 Linux의 다른 디렉토리로 이동하거나 상위 디렉토리의 이름을 변경할 때도 발생하는 것으로 보입니다.
저도 같은 문제를 겪고 있었습니다.는 내 이름에 Ubuntu가 포함되어 있다는 것이었습니다.$
$dir 외부에 가상 환경을 만들었을 때 정상적으로 작동했습니다.
이상하다.
않는 중 이름에 입니다./Documents/project name/app
을 이름변으로 /Documents/projectName/app
문제를 해결합니다.
다음은 모든 pip 설치 옵션 목록입니다. '하나도 찾을 수 없습니다.'-E
옵션, 이전 버전일 수 있습니다.아래는 간단한 영어 사용법을 공유하고 있습니다.virtualenv
다음 SO 사용자를 위해.
모든 것이 정상인 것 같습니다. 활성화를 수락합니다.virtualenv
(foo
). 버전,버전 패키지와 한) 수 있습니다 운영 중인 이전 버전이 있고 애플리케이션으로 최신 Django 릴리스를 테스트하려는 경우 다양한 Python 버전, 다양한 Django 버전 또는 다른 Python 패키지와 같은 여러 개의 (다양한) Python 환경을 가질 수 있습니다.
말해서 (사용하는 것입니다.virtualenv
하면 다른 할 수 2및 3-할 수 2.7 및 3.3 - 새 사수있다습니용할설치 (로사용▁python)).--no-site-packages
또는 모든 (" "" 사용)를 지정합니다.--system-site-packages
옵션)을 선택합니다..
$ pip install django
로 "" " " " " " 를 .pip freeze
글로벌 사이트 검색자의 이름을 제공합니다.
dir (를 실행하는 venv dir (foo) 내부에 .$ source /bin/activate
이제 pip으로 설치된 모든 것이 가상 환경에만 설치되고 pip freeze는 글로벌 사이트에서 실행되는 python 패키지 목록을 제공하지 않습니다.활성화된 후:
$ virtualenv --no-site-packages foo
New python executable in foo/bin/python
Installing setuptools............done.
$ cd foo
$ source bin/activate
(foo)$ pip install django
(foo)
$
하고 있음을 pip -, 되며 global Python sign 파일에는 영향이 . pip 파일에는 venv가 포함됩니다.
저는 pip in venv가 여전히 글로벌 pip로 작동하는 동일한 문제를 접했습니다.
많은 페이지를 검색한 후에, 저는 이런 식으로 알아냅니다.
virtualenv에서 "--no-site-packages" 옵션을 사용하여 새 venv 생성
virtualenv --no-site-packages --python=/xx/xx/bin/python my_env_nmae
virtualenv의 doc 파일에서 "--no-site-proxy" 옵션이 1.7.0 이후로 기본 true였지만 수동으로 설정하지 않으면 작동하지 않습니다.순수한 venv를 얻기 위해, 나는 이 옵션을 2로 설정할 것을 강력히 제안합니다.생성한 새 환경 활성화
source ./my_env_name/bin/activate
- pip 위치와 python 위치를 확인하고 이 두 명령이 가상 환경에 있는지 확인합니다.
pip --version
which python
- 가상 환경에서 pip을 사용하여 글로벌 패키지 중단 없이 패키지를 설치합니다.
pip install package_name
이 답변이 도움이 되길 바랍니다!
나의 문제는pip
그리고.python3
버전최신 버전의 경우django
설치,pip3
필요합니다.따라서 다음 명령을 사용하여 가상 환경을 생성한 후 문제가 해결되었습니다.
> virtualenv --python=python3 venv
> source venv/bin/activate
> which pip3 #should be different from /usr/local/bin/pip3
...<some-directory>/venv/bin/pip3
PS 우분투에서 mypython의 기본 버전이 2.7이었기 때문에 이 문제가 발생했습니다.위 명령을 사용하면 기본 버전이 무시됩니다.
python.org 의 문서에 따르면 usbuntu 22.04로 업데이트되었거나 동일한 문제로 혼란스러운 사용자는 먼저 설치된 pip를 제거한 후 /usr/local/bin에 다시 설치하고 3.10.5가 될 때까지 다음을 실행합니다.
sudo python get-pip.py --prefix=/usr/
스크립트가 없으면 다운로드해야 합니다.성공 메시지를 반환하고 virtualenvor poetry를 설치하면 /usr/local이 쓰기 가능하지 않으며 ~/.local/what/vere에 설치해도 됩니다.그런 다음 모든 것이 좋습니다. virtualenv를 사용하여 프로젝트 dir에 venv 폴더를 다시 만듭니다. 이상한 일이 발생하면 어떤 명령을 사용하여 pip3 또는 virtualenv의 경로를 확인하고 제거하십시오.
문제는 가상 환경을 다음과 같이 설치했다는 것입니다.
python3 -m venv venv
그리고 나서 venv를 작동시킨 후에, 나는 달리고 있었습니다.
python3 main.py
패키지를 설치하라는 메시지가 나타나지 않았기 때문에 글로벌 패키지에 의존했습니다.
아래를 실행하면 효과가 있습니다.
python main.py
언급URL : https://stackoverflow.com/questions/1382925/virtualenv-no-site-packages-and-pip-still-finding-global-packages
'programing' 카테고리의 다른 글
기본 키와 대리 키의 차이점은 무엇입니까? (0) | 2023.07.16 |
---|---|
PySpark에서 데이터 프레임 열을 String 유형에서 Double 유형으로 변경하는 방법은 무엇입니까? (0) | 2023.07.16 |
세 자리 숫자에 대한 열 지도에서 과학적 표기법을 보여주는 Seaborn (0) | 2023.07.16 |
Python에서 서로 다른 라인 스타일로 주 그리드라인과 부 그리드라인을 만드는 방법 (0) | 2023.07.16 |
DistutilsOptionError: home 또는 prefix/exec-prefix 중 하나를 제공해야 합니다. 둘 다 제공하지 않습니다. (0) | 2023.07.16 |