最近,我发现自己不得不在没有互联网连接的机器上安装python项目的所有依赖项(20+)。我使用pip download ...
获取所有*.whl
文件并手动传输它们。直到现在,我才完全理解pip的天才之处,以及它是如何独立计算出依赖树的,并且能够按照正确的顺序安装每个包。例如,一个包依赖于requests
包,它本身依赖于urllib3
包,依此类推。
我想要一种使用命令控制台或python本身在机器上安装所有这些依赖项的自动化方法,因此我转向StackOverflow并找到了以下解决方案:如何在cmd中安装多个whl文件
几乎所有建议的解决方案都适用于我,但是,它的缺点是必须多次运行它们,直到安装不再失败!这是由于脚本/命令按字母顺序对包进行排序,并试图按顺序安装它们(例如,在requests
到位之前尝试安装urllib3
)。
是否有更明智的方法只需按时执行脚本/命令就可以做到这一点?
发布于 2021-01-23 18:27:33
这个目录中满是您创建的轮式分发文件,有时被称为舵手。它们通常用于使可重复和/或脱机安装。
从舵手室安装的一种常见方法是:
python -m pip install --no-index --no-deps path/to/wheelhouse/*.whl
如果所有依赖项及其依赖项的所有车轮都在舵轮上,那么安装顺序并不重要,并且不需要连接到任何远程包索引(用于解决依赖关系等)。这就是为什么我们可以使用--no-deps
和--no-index
标志。
参考
撇开
直到现在,我才完全理解pip的天才之处,以及它是如何独立计算出依赖树的,并且能够按照正确的顺序安装每个包。
pip的依赖解析器是https://pypi.org/project/resolvelib/。有一个简单的源代码存储库中的示例演示了如何使用它来解决PyPI上的车轮问题。
https://stackoverflow.com/questions/65844775
复制相似问题