git repo에서 pip-installing 할 때 # egg = foo 이유


96

git repo에서 설치하기 위해 "pip install -e ..."를 수행 할 때 # egg = somename 또는 pip 불평을 지정해야합니다. 예를 들면 :

pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app

이 "달걀"문자열의 의미는 무엇입니까?


1
pip install문서 의이 부분은에 대해 이야기 #egg=name하지만 명확한 답변을 제공하지 않습니다.
Christian Long

답변:


36

per pip install -h "egg"문자열은 설치의 일부로 체크 아웃되는 디렉토리입니다.


12
저장소와 동일한 이름 일 수 있습니까? 케이스가 중요합니까?
CMCDragonkai

14
"체크 아웃되는 디렉토리"? 그렇다면 지점 이름을 입력해야합니까? 뭔가 만들어?
Chris

2
커스텀 Python 패키지를 만든 경우 setuptools를 실행할 때 이름 project-name.egg-info/top_level.txt이 지정된 디렉토리 가 생성되어야합니다. 이 파일의 내용을 egg매개 변수 값으로 사용하십시오 .
dspacejs

2
egg=...설정이 실제로 중요한지 알 수없는 것 같습니다 . 설치중인 패키지에는 top_level.txt 파일에 여러 항목이 있습니다. name스크립트가 사용 하는 kwarg와 setup.py임의의 값 을 일치시키는 실험을했습니다 . 결과는 어느 쪽이든 같은 것 같습니다. pip install https://...필요하지 않은 구문을 사용하여 설치하고 있습니다 -e.
Taylor Edmiston

8

# egg = Package를 포함해야 pip가 해당 URL에서 무엇을 기대할 수 있는지 알 수 있습니다. https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support를 참조 하세요.

계란에 더 많이


21
"그래서 핍은 그 URL에서 무엇을 기대해야하는지 알고 있습니다."라는 의미는 무엇입니까? 그런 URL에 추가 할 수있는 #egg 이외의 다른 것이 있습니까?
Lorin Hochstein 2012 년

나는 실제로에서 윌의 대답처럼 pip install -h, Source will be checked out into src/PACKAGE (lower-case) and installed in-place (using setup.py develop)나는 ... 다른 곳에서 사용되는 것을 확실하지 않다
스카 일러 Saveland

복제되었지만 설치되지 않았습니다. :(
holms

6

https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support 말한다 :

URL 접미사 "egg =-"의 "프로젝트 이름"구성 요소는 pip가 메타 데이터를 다운로드하고 분석하기 전에 프로젝트를 식별하기 위해 종속성 논리에서 pip에 의해 사용됩니다. 달걀 이름의 선택적 "버전"구성 요소는 기능적으로 중요하지 않습니다. 사용중인 버전에 대한 사람이 읽을 수있는 단서를 제공 할뿐입니다. setup.py가 프로젝트의 루트에없는 프로젝트의 경우 "하위 디렉토리"구성 요소가 사용됩니다. "하위 디렉터리"구성 요소의 값은 프로젝트의 루트에서 setup.py가있는 경로 여야합니다.

이것으로부터 나는 달걀 값이 종속성 검사에만 사용된다는 것을 추론하므로 관습에 따라 some-pypi-package-name포함 된 폴더가 아닌 패키지 이름 (예 )을 사용해야한다고 생각합니다 (예 some_pypi_package_name)


6

Egg는 번들로 제공되는 Python 코드 입니다. git URL에서 egg는 프로젝트 이름입니다. VCS 지원

일반적으로 Pypi에서 Python 패키지를 설치하므로 패키지 이름과 버전 만 지정합니다 (또는 지정하지 않으면 최신 버전으로 가정). 그런 다음 Pypi는 원하는 계란을 검색하고 pip가 설치합니다. pip install celery최신 게시 된 달걀 pip install celery[redis]을 설치하고 동일한 셀러리 패키지를 포함하는 다른 달걀을 설치하고 셀러리의 setup.py에서 redis에 대한 종속성으로 나열된 모든 패키지의 최신 달걀을 설치합니다.

git 및 gitlab 경로를 사용하여 /{user|group}/{repository}.git@{tag}#egg={package-name}. #egg=celery와 사이에는 차이가 #egg=celery[redis]있지만 둘 다 동일한 소스 코드에서 나옵니다.

"태그"는 실제 태그 외에 분기 또는 커밋 해시 일 수도 있습니다. master지정하지 않은 경우 로 간주됩니다 .

예를 들어, git+https://github.com/celery/celery.git#egg=celery==4.3.0마스터 브랜치를 확인하고 설치합니다. 버전 번호를 지정 했더라도 설치시 고려되지 않습니다. 버전 번호가 무시됩니다.

git 또는 다른 VCS URL을 통해 설치할 때 필요한 버전의 태그 또는 해시를 찾고 싶을 것입니다. 예를 들어 git+https://github.com/celery/celery.git@v4.3.0#egg=celery"v4.3.0"태그가 지정된 커밋을 체크 아웃 한 다음 해당 소스 코드에서 패키지를 설치합니다. 메인테이너가 리포지토리에 심하게 잘못 태그를 지정하지 않았다고 가정하면 원하는 버전을 얻을 수 있습니다.

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