pip install总是克隆git repos,即使已经安装了包

时间:2016-01-14 11:48:49

标签: git version-control pip

有没有办法让pip检查是否已经安装了git指定的包并完全跳过git cloning?

文档提到您可以在egg定义之后指定版本,但这只是为了方便用户使用,并且不在任何地方使用。

3 个答案:

答案 0 :(得分:0)

对于我的用例,解决方案是从表单中更改URL:

git+https://example.com/project.git@v5.5#egg=project-5.5

到此(删除最终版本号):

git+https://example.com/project.git@v5.5#egg=project

一旦我这样做,我可以重复运行pip install命令,它只会在第一次克隆存储库。

答案 1 :(得分:0)

来自Martijn Pieters'回答Caching remote repository for pip installs

  

您可以将pip安装的结果缓存为Python Wheel:

pip wheel --wheel-dir=/tmp/wheelhouse git+https://example.com/project.git#egg=project
     

这为/ tmp / wheelhouse中的存储库构建了一个轮子。您可以   然后重新使用驾驶室进行后续安装:

pip install --use-wheel --no-index --find-links=/tmp/wheelhouse project
     

然而,车轮不会从存储库更新。

这适用于纯python存储库。如果你需要的存储库挂钩到它构建的C库(比如某种NumPy或TensorFlow扩展),你可以试试

pip download -d /tmp/pip_packages git+https://example.com/project.git#egg=project

然后安装

pip install --find-links /tmp/pip_packages project

如果仍然不起作用,最后的手段可能是

git clone --depth=1 https://example.com/project.git ./project
pip install -e project

答案 2 :(得分:0)

即使其他像我这样的菜鸟都面临这个问题,也可能会由于URL中的鸡蛋名称不正确而重新克隆和重建软件包。

特定来说,如果您的项目名为project_name,则pip会将包(和鸡蛋)命名为project-name,在构建过程中将下划线替换为连字符。因此,您可能需要将URL更改为

git+https://example.com/project_name.git#egg=project_name

git+https://example.com/project_name.git#egg=project-name

查看pip install ...的输出将告诉您正在创建和使用的程序包名称。