我最近发现自己不得不在没有互联网连接的机器上安装 python 项目的所有依赖项(20+)。我曾经pip download ...获取所有*.whl文件并手动传输它们。直到现在我才完全欣赏 pip 的天才,以及它如何自行计算依赖树并设法以正确的顺序安装每个包。例如,包依赖于requests包,而包本身又依赖于urllib3包等等。
我想要一种使用命令控制台或 python 本身在机器上安装所有这些依赖项的自动化方式,所以我转向 StackOverflow 并找到了这些解决方案: 如何在 cmd 中安装多个 whl 文件
几乎所有建议的解决方案都对我有用,但缺点是必须多次运行它们,直到不再安装失败!这是由于脚本/命令按字母顺序对软件包进行排序并尝试按该顺序安装它们(例如,在到位requests之前尝试安装urllib3)。
有没有更聪明的方法来做到这一点,只按时执行脚本/命令?
sin*_*roc 10
这个充满您创建的轮分布文件的目录有时称为驾驶室。它们通常用于进行可重复和/或离线安装。
从驾驶室安装的常见方法是:
python -m pip install --no-index --no-deps path/to/wheelhouse/*.whl
Run Code Online (Sandbox Code Playgroud)
如果所有依赖项及其依赖项的所有轮子都在驾驶室中,那么安装顺序并不重要,并且不需要连接到任何远程包索引(用于依赖项解析等)。这就是为什么我们可以使用--no-deps和--no-index标志。
参考:
在旁边:
直到现在,我才完全欣赏 pip 的天才,以及它如何自行计算出依赖关系树并设法以正确的顺序安装每个包。
pip的依赖解析器是resolvelib. 其源代码存储库上有一个简单的示例,展示了如何使用它来解决PyPI上的轮子问题。
| 归档时间: |
|
| 查看次数: |
572 次 |
| 最近记录: |