有没有办法让pip检查是否已经安装了git指定的包并完全跳过git cloning?
文档提到您可以在egg定义之后指定版本,但这只是为了方便用户使用,并且不在任何地方使用。
答案 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 ...
的输出将告诉您正在创建和使用的程序包名称。