Ubuntu PIP는 VirtualEnv 내부 대신 전역적으로 패키지를 설치합니다.

Ubuntu PIP는 VirtualEnv 내부 대신 전역적으로 패키지를 설치합니다.

virtualenv를 생성하고 프로젝트에 포함된 요구사항.txt에서 패키지를 설치하려고 합니다.

환경을 생성할 때 Python과 pip가 실제로 해당 환경에서 나온 것인지 확인합니다. 즉, 내가 실행할 때 :

source ./virtualenv/bin/activate

which pip

which python

virtualenv 디렉터리에 있는 바이너리를 가리키는 결과를 얻었습니다.

그런 다음 패키지 설치를 진행합니다. pip install -r requirements.txt

한동안 pkg-resources=0.0.0요구 사항.txt 내의 줄 때문에 문제가 발생했습니다. 결과적으로 Ubuntu의 버그로 인해 해당 줄이 이 파일에 입력되었습니다. 짐작할 수 있듯이 저는 이 파일을 Ubuntu 시스템에서 만들었습니다.

선을 긋고 나면 설치가 진행됩니다.

그러나 설치 후 pip list를 실행하면 목록에는 다음 항목만 포함됩니다.

pip(8.1.1) pkg-resources(0.0.0) setuptools(20.7.0)

게다가 virtualenv를 비활성화하고 pip list를 전역적으로 실행하면 모든 종속성이 전역적으로 설치된 것을 볼 수 있습니다.

여기에는 두 가지 질문이 있습니다. 하나 - 가장 확실한 것은 - 왜 이런 일이 발생하는가? 두 번째는 어떻게 글로벌 패키지를 정리하고 현재 그곳에 존재하는 오염 물질을 제거할 수 있습니까?

부록:

또 다른 기괴한 행동은 다음과 같이 구성됩니다. sudo pip uninstall -r requirements.txt전역 설치를 되돌리기 위해 virtualenv 내에서 실행하려고 하면 다음 오류가 발생합니다.

요구 사항 aldryn-apphooks-config를 제거할 수 없습니다. 설치되지 않았습니다.

즉, 제거하려고 하면 pip가 virtualenv 내부에서 패키지를 찾으려고 시도하는 것 같습니다.

반면에 virtualenv를 비활성화하면 동일한 명령을 사용하여 전역 설치에서 패키지를 성공적으로 제거할 수 있습니다.

어쨌든 pip uninstall 명령과 비교할 때 Ubuntu에서 pip install 명령이 작동하는 방식에는 차이가 있습니다. 그들은 다른 장소에서 패키지를 "찾습니다".

관련 정보