我最近发现自己处于必须在没有互联网连接的机器上安装 python 项目的所有依赖项(20+)的情况。我用了pip download ...
得到所有的*.whl
文件并手动传输它们。直到现在,我才完全欣赏 pip 的天才,以及它如何自行计算出依赖关系树并设法以正确的顺序安装每个包。例如。一个包取决于requests
包本身取决于urllib3
包等。
我想要一种使用命令控制台或 python 本身在计算机上自动安装所有这些依赖项的方法,因此我转向 StackOverflow 并找到了以下解决方案:如何在cmd中安装多个whl文件
几乎所有建议的解决方案都适合我,但缺点是必须多次运行它们,直到安装不再失败!这是由于脚本/命令按字母顺序对包进行排序并尝试按该顺序安装它们(例如尝试安装requests
before urllib3
已到位)。
有没有更聪明的方法来只按时执行脚本/命令来做到这一点?
这个充满您创建的 Wheel 分发文件的目录有时称为驾驶室。它们通常用于进行可重复和/或离线安装。
从驾驶室安装的常见方法是:
python -m pip install --no-index --no-deps path/to/wheelhouse/*.whl
如果所有依赖项及其依赖项的所有轮子都在驾驶室中,那么安装顺序并不重要,并且不需要连接到任何远程包索引(用于依赖项解析等)。这就是为什么我们可以使用--no-deps
and --no-index
flags.
参考:
Aside:
直到现在,我才完全欣赏 pip 的天才,以及它如何自行计算出依赖关系树并设法以正确的顺序安装每个包。
pip的依赖解析器是resolvelib。有一个简单的其源代码存储库中的示例展示如何使用它来解决车轮问题PyPI.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)