[python] Python 패키지 및 egg-info 디렉토리

누군가 egg-info 디렉토리가 각각의 모듈에 어떻게 연결되어 있는지 설명 할 수 있습니까? 예를 들어, 다음이 있습니다.

/usr/local/lib/python2.5/site-packages/quodlibet/
/usr/local/lib/python2.5/site-packages/quodlibet-2.0.egg-info/

egg-info 디렉토리가 해당 모듈을 setuptools (easy_install)에 표시하는 것이라고 가정하고 있습니다. 맞습니까? 그렇다면 setuptools는 egg-info 디렉토리를 모듈 디렉토리에 어떻게 연결합니까?

내가 올바른 길을 가고 있다고 가정하고 예를 들어 기존 패키지를 setuptools에 표시하려면 모듈 디렉토리와 egg-info 디렉토리를 사이트에 심볼릭 링크하면됩니다. 패키지 디렉토리? 직접 시도했지만 패키지가 setuptools에 표시되는지 테스트하는 방법을 잘 모르겠습니다. 이것을 테스트하는 방법을 알려 주실 수 있다면 보너스 포인트 🙂

이 모든 것을 이해하려는 주된 이유는 일부 모듈을 사이트 패키지로 심볼릭 링크하여 변경하고이를 사용하는 스크립트에 변경 사항을 다시 설치할 필요없이 볼 수 있도록하기 때문입니다. 각 변경 후 PyPI에서 계란.



답변

.egg-info 디렉토리는 –single-version-externally-managed를 사용하여 egg를 설치 한 경우에만 생성됩니다. “일반적으로”계란을 설치하면 코드와 메타 데이터가 모두 포함 된 단일 디렉토리 (또는 zip 파일)가 생성됩니다.

pkg_resources (메타 데이터를 읽는 라이브러리)에는 require패키지의 특정 버전을 요청하는 데 사용할 수 있는 함수 가 있습니다. “이전 스타일”, 일반 가져 오기의 경우 easy_install은 .pth 파일을 해킹하여 sys.path에 egg 디렉토리를 가져옵니다. –single-version-externally-managed의 경우 단일 버전 만 설치되기 때문에이 해킹이 필요하지 않습니다 (시스템의 패키징 인프라, 예 : rpm 또는 dpkg). require(또는 다른 pkg_resources 바인딩 메커니즘) 을 사용하는 응용 프로그램을 위해 egg-info는 여전히 포함되어 있습니다.

하드 링크로 패키지를 설치하려면 “setup.py develop”을 사용하는 것이 좋습니다. 이것은 실제로 계란을 설치하지는 않지만 사이트 전체에서 사용할 수 있도록하는 setuptools의 명령입니다. 이를 위해 pkg_resources가 찾을 수 있도록 egg-link 파일을 만들고 .pth 파일을 조작하여 일반 가져 오기에서 찾을 수 있도록합니다.


답변