当前位置: 首页 > 知识库问答 >
问题:

如何安装多个。whl文件的顺序正确

郜杰
2023-03-14

最近,我发现自己不得不在没有互联网连接的机器上安装python项目的所有依赖项(20)。我用了pip下载获取所有*。whl文件并手动传输。直到现在,我才完全理解pip的天才,以及它是如何独立计算依赖关系树并以正确的顺序安装每个包的。例如,包依赖于请求包,而包本身依赖于urlib3包等等。

我想要一种使用命令控制台或python本身在机器上自动安装所有这些依赖项的方法,因此我转向StackOverflow并找到了以下解决方案:如何在cmd中安装多个whl文件

几乎所有建议的解决方案都适用于我,但缺点是必须多次运行它们,直到安装不再失败!这是由于脚本/命令按字母顺序对软件包进行排序并尝试按该顺序安装(例如,在urlib3就位之前尝试安装requests)。

是否有一种更聪明的方法可以做到这一点,只需按时执行脚本/命令?

共有2个答案

彭俊智
2023-03-14

确定正确安装顺序的最简单方法是根据软件包的依赖关系对其进行排序。这些主题已经在其他几个SO问题中单独讨论过,所以我将链接到它们,而不是重复。“安全安装算法”如下所示:

  1. 读取所有包的元数据。这个问题解释了如何关注包名和依赖项
颜高格
2023-03-14

您创建的这个包含轮子分发文件的目录有时称为轮子屋。它们通常用于进行可重复和/或脱机安装。

从驾驶室安装的常见方法是:

python -m pip install --no-index --no-deps path/to/wheelhouse/*.whl

如果所有依赖项及其依赖项的所有控制盘都在控制室中,则安装顺序无关紧要,无需连接到任何远程包索引(用于依赖项解析等)。这就是为什么我们可以使用--no deps--no index标志。

参考:

  • pip文件的“安装包”部分

旁白:

直到现在,我才完全理解pip的天才,以及它是如何独立计算依赖关系树并以正确的顺序安装每个包的。

pip的依赖项解析器是解析器。它的源代码库中有一个简单的例子,展示了如何使用它来解决PyPI上的轮子。

 类似资料:
  • 问题内容: 如何安装.whl文件?我有Wheel库,但是我不知道如何使用它来安装那些文件。我有.whl文件,但我不知道如何运行它。请帮忙。 问题答案: 通常,您会使用安装车轮之类的工具。如果这是针对PyPI上托管的项目的,则将其留给工具以发现并下载文件。 为此,您需要安装软件包: 然后,您可以告诉安装项目(如果有的话,它将下载车轮),或者直接安装车轮文件: 该模块一旦安装,也可以从命令行运行,您可

  • 问题内容: 我在Windows机器上安装Python软件包(特别是JPype1 0.5.7)时遇到问题,并且想用Christoph Gohlke的Window二进制文件安装它。(根据我的经验,这减轻了许多其他软件包安装的麻烦。) 但是,尽管Christoph过去曾经提供.exe文件,但最近看来他是在上载.whl文件。 http://www.lfd.uci.edu/~gohlke/pythonlib

  • 技能等级:初学者 我正在尝试在Python中添加一个库。延伸部分是车轮。 有人能告诉安装车轮文件的分步方法吗?

  • 我想将Matplotlib安装到Python安装中。但我不能安装它,因为没有任何EXE文件;而是有whl文件。我不知道whl文件的安装方法。

  • 问题内容: (在回答之前,请至少阅读以下内容:这是一个临时措施!不,我们不想设置本地存储库管理器并手动运行脚本) 我们有一个带有一些依赖项的遗留项目,我们具有包含源代码和javadoc的本地副本,并且已被证明可以在生产环境中很好地工作,但是在Central中无法以相同的质量使用。我们想使用我们已经拥有的罐子。 我发现我可以手动运行一个适当的复杂mvn install:install-file命令来

  • 问题内容: 我正在使用fabric(0.9.4)+pip(0.8.2),并且需要为多个服务器安装一些python模块。所有服务器均具有旧版本的setuptools(0.6c8),需要对pymongo模块进行升级。Pymongo需要setuptools> = 0.6c9。 我的问题是pip使用pymongo而不是setuptools开始安装,这会导致pip停止。在需求文件中改组模块顺序似乎无济于事。