어떤 상황에서 pip가 yum의 패키지 업데이트를 "발견"할 수 있습니까?

어떤 상황에서 pip가 yum의 패키지 업데이트를 "발견"할 수 있습니까?

이전에 pip를 사용했던 SLES 시스템에 여러 Python RPM이 설치된 원격 사이트의 일부 노드에 문제가 있습니다. 원격 팀에 두 가지를 혼합하지 말라고 지시했고 현재는 이 지침을 따르고 있지만 여전히 "혼합"되는 일부 시스템이 있습니다.

사이트의 일부(전부는 아님) 시스템에서 "pip list"를 실행하면 pip가 최신 패키지를 발견했음을 알 수 있습니다. Pip은 RPM을 통해 업데이트되었지만 모든 노드에서 다른 Python 패키지와 동일한 순서로 설치되었지만 동일한 동작은 없었습니다. 결과적으로, 최신 패키지로 인한 비호환성으로 인해 일부 스크립트가 이제 제대로 작동하지 않습니다.

이 사이트의 노드 간에는 확실히 약간의 차이가 있지만 전체적으로는 최대한 동일하게 유지됩니다. Python 패키지의 yum 설치로 pip 데이터베이스를 업데이트하는 방법을 아는 사람이 있습니까?

답변1

Python 패키지의 yum 설치로 pip 데이터베이스를 업데이트하는 방법을 아는 사람이 있습니까?

이러한 이유로 pip에는 실제로 Python 자체와 별도의 데이터베이스가 없습니다. 패키지가 설치되면 관련 이름이 <package>.egg-info패키지 자체 옆에 표시됩니다. 이것은 핵심 파이썬 pip이 아니며 yum. 따라서 pip에 무엇이 있는지 물어보면 egg-info메타파일을 찾아 이를 사용하여 무엇이 설치되어 있는지 알려줍니다. 예: /usr/lib/python3/dist-packages우분투에서.

yum에 Python 패키지 설치를 요청하면 RPM에도 이와 동일한 egg-info파일이 함께 제공되어야 합니다.

Pip의 작업 중 하나는 설치 시 Python 환경의 종속성을 확인하는 것입니다. yum이 종속성을 깨면 이는 발견된 대로 발견됩니다. 이는 파일의 메타데이터를 확인하여 수행됩니다 egg-info.

Yum은 또한 종속성을 확인하려고 시도합니다. 하지만 큰 문제가 있습니다. Yum은 실제로 어떤 Python 라이브러리가 설치되어 있는지 알지 못합니다. 설치된 RPM만 알 수 있습니다. 따라서 yum이나 다른 RPM 없이 설치된 Python 패키지는 yum에서 검색되지 않습니다.


이것이 실제로 가상 환경을 만드는 목적입니다. 응용 프로그램 환경을 시스템 환경에 묶는 것은 일반적으로 좋은 생각이 아닙니다. 애플리케이션 요구 사항을 운영 체제에 맞추는 좋은 방법은 거의 없습니다.


어떤 상황에서 pip가 yum의 패키지 업데이트를 "발견"할 수 있습니까?

yum이 동일한 환경에 패키지를 설치한 경우 pip가 해당 패키지를 검색할 수 있어야 합니다. 두 가지 주요 예외는 다음과 같습니다.

  • 가상 환경에 패키지를 설치하려는 경우. 특별히 요청하지 않는 한 가상 환경은 시스템 패키지를 상속하지 않습니다. 환경이 이를 상속하더라도 항상 자체 로컬 설치를 먼저 사용합니다.

  • pip가 시스템 대신 사용자에게 패키지를 설치하는 경우. 다시 말하지만, 이러한 패키지는 yum에 의해 재정의되지 않으며 Python은 일반적으로 사용자를 위해 설치된 패키지( /home/...시스템에 설치된 패키지 아래)를 사용합니다.

두 번째는 기계 간 차이의 원인일 가능성이 높습니다. pip install시스템용으로 설치하는 사용자 에게 설치될 수 있습니다 .sudo pip install

관련 정보