개인 GitHub 저장소에서 pip을 사용하여 패키지를 설치할 수 있습니까?
개인 GitHub 저장소에서 Python 패키지를 설치하려고 합니다.공용 저장소의 경우 정상적으로 작동하는 다음 명령을 실행할 수 있습니다.
pip install git+git://github.com/django/django.git
단, 개인 저장소로 이 작업을 시도하면 다음과 같습니다.
pip install git+git://github.com/echweb/echweb-utils.git
다음과 같은 출력이 표시됩니다.
Downloading/unpacking git+git://github.com/echweb/echweb-utils.git
Cloning Git repository git://github.com/echweb/echweb-utils.git to /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build
Complete output from command /usr/local/bin/git clone git://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build:
fatal: The remote end hung up unexpectedly
Cloning into /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build...
----------------------------------------
Command /usr/local/bin/git clone git://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build failed with error code 128
이는 인증을 제공하지 않고 개인 저장소에 액세스하려고 하기 때문일 수 있습니다.그래서 Git+를 사용하려고 했다.ssh
하는 것을 하고 있습니다.pip ssh SSH 용 、 SSH の hoping hoping hoping hoping 。
pip install git+ssh://github.com/echweb/echweb-utils.git
이것에 의해, 다음의 출력이 출력됩니다.
Downloading/unpacking git+ssh://github.com/echweb/echweb-utils.git
Cloning Git repository ssh://github.com/echweb/echweb-utils.git to /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build
Complete output from command /usr/local/bin/git clone ssh://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build:
Cloning into /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
----------------------------------------
Command /usr/local/bin/git clone ssh://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build failed with error code 128
내가 달성하려고 하는 것이 가능하기나 한가요?그렇다면 어떻게 해야 하나요?
.git+ssh
URI 스킴이지만, 유저명을 설정할 필요가 있습니다.URI 의 일부에 주의해 주세요.
pip install git+ssh://git@github.com/echweb/echweb-utils.git
PS: 인스톨에서는, 「git+ssh」URI 스킴은 「편집 가능한」요건만으로 기능합니다.
pip install -e URI#egg=EggName
주의:를 변경하다:
나타내는 성질git remote -v
/
pip
★★★★★★★★★★★★★★★★★★:
$ git remote -v
origin git@github.com:echweb/echweb-utils.git (fetch)
# ^ change this to a '/' character
잊어버린 경우 다음 오류가 발생합니다.
ssh: Could not resolve hostname github.com:echweb:
nodename nor servname provided, or not known
또한 로컬로 개인 저장소를 복제한 경우 다음 작업을 수행할 수 있습니다.
pip install git+file://c:/repo/directory
더 으로 보면 요.-e
변경이 반영되기 전에 커밋할 필요가 없습니다).
pip install -e C:\repo\directory
다음과 같이 HTTPS URL을 사용하여 직접 실행할 수 있습니다.
pip install git+https://github.com/username/repo.git
이것은, 요건에 그 행을 추가하는 것만으로 동작합니다.예를 들어 Django 프로젝트에서 txt를 사용합니다.
Bitbucket에서도 동작합니다.
pip install git+ssh://git@bitbucket.org/username/projectname.git
이 경우 Pip은 SSH 키를 사용합니다.
SSH 키보다 토큰을 사용하는 것이 훨씬 쉽다는 것을 알았습니다.이에 대한 좋은 문서를 찾을 수 없었기 때문에 주로 시행착오를 통해 이 솔루션을 발견하게 되었습니다.또, pip 와 setuptools 로부터의 인스톨에는 몇개의 미묘한 차이가 있습니다만, 이 방법은 양쪽 모두에 유효합니다.
GitHub don't (현재 2016년 8월 현재)는 개인 저장소의 zip/tarball을 쉽게 얻을 수 있는 방법을 제공합니다.따라서 Git 저장소를 가리키고 있음을 setuptools에 알려야 합니다.
from setuptools import setup
import os
# Get the deploy key from https://help.github.com/articles/git-automation-with-oauth-tokens/
github_token = os.environ['GITHUB_TOKEN']
setup(
# ...
install_requires='package',
dependency_links = [
'git+https://{github_token}@github.com/user/{package}.git/@{version}#egg={package}-0'
.format(github_token=github_token, package=package, version=master)
]
여기 몇 가지 주의사항이 있습니다.
- 개인 저장소의 경우 GitHub을 사용하여 인증해야 합니다.제가 찾은 가장 간단한 방법은 OAuth 토큰을 생성하여 환경에 드롭한 후 URL에 포함시키는 것입니다.
- 일부 버전 번호를 포함해야 합니다(여기서 참조).
0
PyPI에 패키지가 없는 경우에도 링크 끝에 있습니다.이것은 단어가 아니라 실제 숫자여야 합니다. - 을 써야 요.
git+
에게 말하는 /tarball을 것이 입니다. version
해시입니다.- 입니다.
--process-dependency-links
pippip에서하는
비밀번호 프롬프트가 필요 없는 GitLab 개인 저장소를 자동으로 'pip install'하는 방법을 알아냈다.이 방법에서는 GitLab "Deploy Keys"와 SSH 구성 파일을 사용하기 때문에 개인 SSH 키 이외의 키를 사용하여 배포할 수 있습니다(내 경우 '봇'에서 사용).아마도 친절한 누군가가 GitHub을 사용하여 검증할 수 있을 것이다.
새 SSH 키 생성:
ssh-keygen -t rsa -C "GitLab_Robot_Deploy_Key"
은 「Dr.C.C.F」로 됩니다.~/.ssh/GitLab_Robot_Deploy_Key
★★★★★★★★★★★★★★★★★」~/.ssh/GitLab_Robot_Deploy_Key.pub
.
해서 붙여넣습니다.~/.ssh/GitLab_Robot_Deploy_Key.pub
GitLab "Deploy Keys" deploy keys keys 。
새 배포 키 테스트
다음 명령어는 SSH에 새 배포 키를 사용하여 연결을 설정하도록 지시합니다.성공하면 "GitLab에 오신 것을 환영합니다, UserName!"이라는 메시지가 나타납니다.
ssh -T -i ~/.ssh/GitLab_Robot_Deploy_Key git@gitlab.mycorp.com
SSH 컨피규레이션파일 생성
해서 '아저씨'를 .~/.ssh/config
contentsfile을 합니다. 다음 내용을 추가합니다.'호스트' 값은 원하는 모든 값을 사용할 수 있습니다(나중에 사용할 예정이므로 기억해 두십시오).HostName git GitLab の URL 。Identify' 은 첫 키 입니다.파일은 첫 번째 단계에서 작성한SSH 키 파일의 경로입니다.
Host GitLab
HostName gitlab.mycorp.com
IdentityFile ~/.ssh/GitLab_Robot_Deploy_Key
SSH를 컨피규레이션파일에 포인트 합니다.
oxyum은 SSH와 함께 pip을 사용하는 방법을 알려 주었습니다.
pip install git+ssh://git@gitlab.mycorp.com/my_name/my_repo.git
SSH가 새로운 Deploy Key를 사용하도록 하려면 조금 수정해야 합니다.이를 수행하려면 SSH 컨피규레이션파일 내의 호스트엔트리를 SSH로 포인트합니다.명령어 내의 'gitlab.mycorp.com'을 SSH 컨피규레이션파일로 사용한 호스트명으로 치환합니다.
pip install git+ssh://git@GitLab/my_name/my_repo.git
이것으로, 패스워드 프롬프트 없이 패키지가 인스톨 됩니다.
CI 서버 내의 요건 파일 등에서 의존 관계를 인스톨 하는 경우는, 다음과 같이 할 수 있습니다.
git config --global credential.helper 'cache'
echo "protocol=https
host=example.com
username=${GIT_USER}
password=${GIT_PASS}
" | git credential approve
pip install -r requirements.txt
경우에는 ★★★★★★★★★★★★★★★★★★★★★★.GIT_USER=gitlab-ci-token
★★★★★★★★★★★★★★★★★」GIT_PASS=${CI_JOB_TOKEN}
.
이 방법에는 분명한 이점이 있습니다.모든 종속성을 포함하는 단일 요구사항 파일이 있습니다.
요건 파일의 구문은 다음과 같습니다.
https://pip.pypa.io/en/latest/reference/pip_install.html#requirements-file-format
예를 들어 다음과 같습니다.
-e git+http://github.com/rwillmer/django-behave#egg=django-behave
설치 후에도 소스가 남아 있도록 하려면 이 옵션을 선택합니다.
아니면 그냥
git+http://github.com/rwillmer/django-behave#egg=django-behave
설치만 원하시면 됩니다.
예를 들어 명령줄 원라이너에서 이 작업을 수행해야 하는 경우에도 가능합니다.Google Colab에 도입하기 위해 다음과 같이 할 수 있었습니다.
- 퍼스널 액세스토큰을 만듭니다.https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token
- 행::
pip install git+https://<PERSONAL ACCESS TOKEN>@github.com/<USERNAME>/<REPOSITORY>.git
git+https://github.com/을 통해 개인 저장소 종속성을 설치할 수도 있습니다.로그인 자격 정보(로그인 및 패스워드 또는 토큰 전개)를 지정함으로써 URL을 사용할 수 있습니다..netrc
삭제:
echo "machine github.com login ei-grad password mypasswordshouldbehere" > ~/.netrc
pip install "git+https://github.com/ei-grad/my_private_repo.git#egg=my_private_repo"
내 사건은 답변에 나와 있는 대부분의 사건보다 좀 더 복잡했다.는 개인 두 를 소유하고 .repo_A
★★★★★★★★★★★★★★★★★」repo_B
에서는 Github에 합니다.pip install repo_A
python
의 끝없는.repo_B
, Github 액션으로서.
이 작업을 해결하기 위해 수행한 단계:
- 내 계정에 대한 개인 액세스 토큰 생성.권한에 대해서는 기본 권한인 .repo - 개인 저장소의 완전한 제어만 유지하면 되었습니다.
- 아래 저장소 비밀 생성
repo_B
, 「」라고 이름을 붙였습니다.PERSONAL_ACCESS_TOKEN
Jamie가 제안한 솔루션과는 달리 소중한 개인 액세스 토큰을 github 액션 내에서 명시적으로 노출할 필요가 없었기 때문에 이것은 중요했습니다..yml
filename을 클릭합니다. - ㅇㅇㅇㅇㅇ.
pip install
송신원으로부터의 패키지(SSH가 아닌)를 HTTPS 경유로 다음과 같이 설정합니다.
export PERSONAL_ACCESS_TOKEN=${{ secrets.PERSONAL_ACCESS_TOKEN }}
pip install git+https://${PERSONAL_ACCESS_TOKEN}@github.com/MY_ORG_NAME/repo_A.git
SSH 를 사용하지 않는 경우는, HTTPS URL 에 유저명과 패스워드를 추가할 수 있습니다.
아래 코드는 작업 디렉터리에 암호가 포함된 "pass"라는 파일이 있다고 가정합니다.
export PASS=$(cat pass)
pip install git+https://<username>:$PASS@github.com/echweb/echweb-utils.git
GitHub에서 설치할 때 다음을 사용할 수 있었습니다.
pip install git+ssh://git@github.com/<username>/<projectname>.git#egg=<eggname>
을 지지로 에 가을 pip 을을 을 but 을 but but but but but but but but but but but but but 。sudo
SSH GitHub " Permission denied (public key)" "git clone" 입니다.「」를 사용합니다.git+https
명령어를 sudo로 실행하고 GitHub에서 사용자/비밀번호를 요청하도록 했습니다.
sudo pip install git+https://github.com/<username>/<projectname>.git#egg=<eggname>
GitHub, GitLab 등에 자신의 라이브러리/패키지가 있는 경우, 예를 들어 v2.0과 같은 구체적인 버전의 라이브러리로 커밋하기 위한 태그를 추가해야 하며, 그 후 패키지를 설치할 수 있습니다.
pip install git+ssh://link/name/repo.git@v2.0
난 이거면 돼.다른 해결방법은 나에게 효과가 없었다.
옥시엄의 용액은 이 답변에 OK입니다.다만, 다음의 방법으로 인스톨 하는 경우는, 주의할 필요가 있습니다.sudo
때문에( too too ((((((((((((((((((((((((((((:/root/.ssh
를 참조해 주세요.
그런 다음 입력할 수 있습니다.
sudo pip install git+ssh://git@github.com/echweb/echweb-utils.git
만 하면 .git clone
( from 또또또또또또 git remote -v
하다
비트 버킷:
git+ssh://git@bitbucket.org:your_account/my_pro.git
GitHub:
git+ssh://git@github.com:your_account/my_pro.git
다음으로 도메인 이름 옆에 있는 것으로 치환해야 합니다.
따라서 다음을 사용하여 설치합니다.
pip install git+ssh://git@bitbucket.org/your_account/my_pro.git
시도해 보세요
pip install git+git@gitlab.mycorp.com/my_name/my_repo.git
없이ssh:...
전 좋아요.
언급URL : https://stackoverflow.com/questions/4830856/is-it-possible-to-use-pip-to-install-a-package-from-a-private-github-repository
'programing' 카테고리의 다른 글
vue-router를 가져오는 동안 Vue가 정의되지 않았음 (0) | 2022.10.23 |
---|---|
HTML(.html) 파일에 PHP 코드/파일을 추가하려면 어떻게 해야 하나요? (0) | 2022.10.23 |
도커 응용 프로그램을 데이터베이스에 연결할 수 없습니다. (0) | 2022.10.22 |
데이터베이스 사용자의 비밀번호를 한 번 설정하려면 어떻게 해야 합니까? (0) | 2022.10.22 |
jQuery 없이 상위 절대 DIV의 하위 요소를 호버링할 때 마우스 아웃 방지 (0) | 2022.10.22 |