[git] pip를 사용하여 git 하위 디렉토리에서 어떻게 설치할 수 있습니까?

많은 폴더가있는 git 저장소가 있는데 그중 하나는 다음과 같이 pip로 설치할 수있는 python 모듈입니다.

repo.git/
repo.git/folder1/
repo.git/folder2/
repo.git/mymodule/
repo.git/mymodule/__init__.py
repo.git/mymodule/setup.py
repo.git/mymodule/...

지금 설치하려면 다음을 수행해야합니다.

git clone http://server/repo.git
cd repo
pip install mymodule
cd ..
rm -rf repo

명시 적으로 복제하지 않고 pip로 모듈을 직접 설치할 수 있습니까?

나는 시도했다 :

pip install git+https://server/repo.git/mymodule/
pip install git+https://server/repo.git:mymodule/

그러나 나는 얻는다 :

IOError: [Errno 2] No such file or directory: '/tmp/pip-88tlLm-build/setup.py'



답변

이 기능에 대한 풀 리퀘스트 가 있으며 , 한 달 전에 브랜치를 개발하기 위해 병합 된 것 같습니다. 구문은 다음과 같습니다 .

pip install -e git+https://git.repo/some_repo.git#egg=version_subpkg&subdirectory=repo # install a python package from a repo subdirectory

마스터에 병합되어 배포 될 때까지 잠시 기다려야 할 것입니다.

업데이트 : 이제 https://pip.readthedocs.io/en/stable/reference/pip_install/#vcs-support 에서 다음과 같이 사용할 수 있으며 문서화 됩니다.

setup.py가 프로젝트의 루트에없는 프로젝트의 경우 “하위 디렉토리”구성 요소가 사용됩니다. “하위 디렉터리”구성 요소의 값은 프로젝트 루트에서 setup.py가있는 경로 여야합니다.

따라서 저장소 레이아웃이 다음과 같은 경우 :

- pkg_dir/
  - setup.py  # setup.py for package ``pkg``
  - some_module.py
- other_dir/
  - some_file
- some_other_file

당신은 사용할 필요가 있습니다

pip install -e vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir

참고 : Windows에서는 URL을 큰 따옴표로 묶어야합니다. 그렇지 않으면 ” ‘하위 디렉토리’가 내부 또는 외부 명령으로 인식되지 않습니다.”라는 오류 메시지가 표시됩니다. 예를 들어 다음을 사용하십시오.

pip install -e "vcs+protocol://repo_url#egg=pkg&subdirectory=pkg_dir"


답변

정답 아래 주석 중 하나에 이미 언급되어 있지만이 문제를 강조하기 위해 Linux 명령 줄에서 실행할 때 앰퍼샌드가 명령 줄에 백그라운드에서 명령을 실행하도록 지시하므로-문자를 이스케이프 해야합니다& .

git+https://git.repo/some_repo.git#egg=version_subpkg\&subdirectory=repo

앰퍼샌드 앞에 백 슬래시가 있습니다. 이스케이프 동작은 Linux 배포판에 따라 달라질 수 있습니다. 나는 전문가가 아닙니다.
이것을 무시하면 다음과 같은 암호 오류가 발생할 수 있습니다.

bash: (...) command not found


답변