【发布时间】:2021-04-26 21:32:40
【问题描述】:
我最近发现自己不得不在没有互联网连接的机器上安装 python 项目的所有依赖项(20+)。我使用pip download ... 获取所有*.whl 文件并手动传输它们。直到现在我才完全欣赏 pip 的天才,以及它如何自行计算依赖树并设法以正确的顺序安装每个包。例如。一个包依赖于requests 包,它自己依赖于urllib3 包等等。
我想要一种使用命令控制台或 python 本身在机器上安装所有这些依赖项的自动化方式,所以我求助于 StackOverflow 并找到了以下解决方案: How to install multiple whl files in cmd
几乎所有建议的解决方案都对我有用,但缺点是必须多次运行它们直到不再安装失败!这是由于脚本/命令按字母顺序对软件包进行排序并尝试按该顺序安装它们(例如,尝试在 urllib3 到位之前安装 requests)。
有没有更聪明的方法来做到这一点,只准时执行一个脚本/命令?
【问题讨论】:
-
作为一个框架挑战 - 您是否考虑过在没有 Internet 连接的机器上“托管”您自己的 PyPI 存储库? stackoverflow.com/a/51127695/1149933
-
不,直到这一刻我才知道这是可能的。您是否有用于解释该过程的材料的建议/链接?
-
我更新了我的评论,并在您输入回复时添加了指向该问题(我认为)的答案的链接。
-
我有点困惑。为什么顺序很重要?这绝对不重要。如果它确实重要,那么某些地方可能会损坏......安装 wheels 只是将wheels文件解压缩到正确的文件夹中(有点复杂,但不是那么多)。您是否尝试在安装命令中添加
--no-deps?也许像python -m pip install --no-deps wheels/*.whl这样的东西? -
就是这样!由于我确定我拥有 .whl 文件形式的所有依赖项,因此使用
--no-deps标志是合理的。尽管亚当的建议也有效,但这当然更简单。如果你想让它成为一个答案,我会接受它。