是否可以使用pip从私人github存储库安装软件包?

正如标题所示,我正尝试从私人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公钥进行身份验证:

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方案,但你必须设置用户名:

pip install git+ssh://git@github.com/echweb/echweb-utils.git

看到git@ part到URI?

PS:还阅读关于部署密钥。

PPS:在我的安装中,“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:repodirectory

您可以使用HTTPS URL直接执行此操作:

pip install git+https://github.com/username/repo.git

例如,这也适用于在django项目的requirements.txt中追加该行。

链接地址: http://www.djcxy.com/p/16411.html

上一篇: Is it possible to use pip to install a package from a private github repository?

下一篇: Transferring files over SSH