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


80

누군가 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에서 계란.


아직도 어딘가에 python 용 quodlibet 플러그인이 있습니까? 정말 멋지다.
Peter Turner

의 아마 자신을 혼성 곡 그건 @PeterTurner - 이 파이썬으로 작성된 것
플로리안 브루 커를

답변:


71

.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 파일을 조작하여 일반 가져 오기에서 찾을 수 있도록합니다.


26
의 효과를 되돌리려면 다음을 setup.py develop사용하십시오.setup.py develop -u
codewarrior 2011-09-16

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