git repo에서 설치하기 위해 “pip install -e …”를 수행 할 때 # egg = somename 또는 pip 불평을 지정해야합니다. 예를 들면 :
pip install -e git://github.com/hiidef/oauth2app.git#egg=oauth2app
이 “달걀”문자열의 의미는 무엇입니까?
답변
per pip install -h “egg”문자열은 설치의 일부로 체크 아웃되는 디렉토리입니다.
답변
# egg = Package를 포함해야 pip가 해당 URL에서 무엇을 기대할 수 있는지 알 수 있습니다. https://pip.pypa.io/en/stable/reference/pip_install/#vcs-support를 참조 하세요.
답변
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
)
답변
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″태그가 지정된 커밋을 체크 아웃 한 다음 해당 소스 코드에서 패키지를 설치합니다. 메인테이너가 리포지토리에 심하게 잘못 태그를 지정하지 않았다고 가정하면 원하는 버전을 얻을 수 있습니다.