安装私有包的pip命令

6

我有一个名为 A 的 Python 包,它依赖于另一个私有包 Godot(托管在 Bitbucket 上,应该通过 git+ssh 协议进行访问)。在 A 包的 setup.py 文件中,我有以下代码:

...
install_requires=['godot'],
dependency_links=['git+ssh://git@bitbucket.org/xxx/godot.git#egg=godot']
...

我有两个问题:

  1. 现在setuptools 1.4(最新稳定版本)不支持“git+ssh”协议,只有开发分支中的代码才能处理此协议:Python setuptools: How can I list a private repository under install_requires?。我已通过以下方式安装了开发版本:

    pip install --upgrade --force-reinstall hg+https://bitbucket.org/pypa/setuptools#egg=setuptools

    我几乎解决了这个问题,但是我想知道是否还有其他方法可用?调用 pip install -r requirements.txt (在 requirements.txt 中包含 git+ssh://git@bitbucket.org/xxx/godot.git#egg=godot)可以吗?

  2. 第二个问题是名称冲突。PyPI 中还有另一个名为 godot 的软件包,因此当我使用以下命令安装软件包 A 时,pip 会从 PyPI 索引中安装 godot:

    pip install git+ssh://git@pypi.corp.com/xxx/A.git#egg=A

    如何强制pip(setup.py)安装私有godot软件包,而不是 pypi 索引中的软件包?

2个回答

1

第一部分:您可以通过指定以下方式使用pip安装软件包:

$ pip install http://my.package.repo/SomePackage-1.0.4.zip

为了简单起见,避免花费不必要的时间,我只需下载.zip源文件,并像上面那样通过pip进行安装。
请参见此处...
第二部分:pip有一个--no-dependencies开关。在手动安装所有依赖项后添加它。

1

我知道这是一个旧话题,但它可能会帮助通过谷歌搜索遇到这个问题的人:

实际上,对于第二部分,你可以简单地在install_requires部分内定义软件包地址:

...
install_requires=['godot @ git+ssh://bitbucket.org/xxx/godot.git#egg=godot']
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接