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

2023-11-23

我最近发现自己处于必须在没有互联网连接的机器上安装 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.

参考:

  • "使用驾驶室(又名安装包)” 部分pip的文档

Aside:

直到现在,我才完全欣赏 pip 的天才,以及它如何自行计算出依赖关系树并设法以正确的顺序安装每个包。

pip的依赖解析器是resolvelib。有一个简单的其源代码存储库中的示例展示如何使用它来解决车轮问题PyPI.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何以正确的顺序安装多个 .whl 文件 的相关文章

随机推荐

  • 通过 PHP-fpm+nginx 没有可用的环境变量

    我尝试按以下方式修改 php ini variables order GPCSE register globals On 但所需要的PATH变量既不在 ENV也不能通过访问getenv PATH 我在跑Nginx PHP FPM on 乌班
  • perl regex 查找任何 5 的倍数的数字

    Perl 正则表达式查找任何 5 的倍数的数字 我尝试使用 5 但它只找到包含 5 的数字 而不是 5 的倍数 还可以查找长度为 5 的倍数的字符串 5 的倍数的数字要么以 5 要么以 0 结尾 尝试使用 d 05 意思是 字符串的开头 s
  • 以编程方式禁用/延迟 Android 锁屏

    我想disable delay以编程方式锁定屏幕 在研究这个问题时 KeyguardManager已折旧 不能持续工作 FLAG DISMISS KEYGUARD不是一个选项 因为我想在后台执行此操作 出于电池原因我不想使用 WakeLoc
  • 如何在pandas中将多种日期格式转换为一种格式

    我有以下 pandas 数据框 日期列为object ID Date Volume 0 13 02 2018 00 06 85 1 13 02 2018 00 10 70 2 13 02 2018 00 11 100 3 2018 02 1
  • 无法让 UICollectionView 显示单元格

    我试图让 UICollectionView 显示在模态呈现的视图控制器内 该应用程序适用于 iPad iOS 7 我创建了 UIViewController 的子类 带有笔尖 并像这样添加它 MyViewController control
  • 如何在 Cassandra 中创建自动增量 ID

    我们知道在SQL数据库中创建自增ID很容易 Cassandra中有没有好的解决方案 ID 应该用于键名或列名 创建全局数字序列在分布式系统中实际上没有任何意义 使用UUIDs 因为你必须让所有参与者都同意并接受序列的演变 在简单的实现下
  • HttpClient PostAsync 无效的帖子格式

    我正在尝试使用 HttpClient 的 PostAsync 登录网站 然而它总是失败 当我使用 WireShark 跟踪连接时 我发现它错误地发布了数据 Code var content new FormUrlEncodedContent
  • ADT插件安装问题Eclipse 3.7 Ubuntu 11.10 [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我正在尝试为 Eclipse 3 7 和 Ubuntu
  • 我们可以使用 php 中的 ini_set() 函数将“allow_url_fopen”设置为“ON”吗?

    这个问题在这里已经有答案了 我们可以使用php中的ini set 函数将 allow url fopen 设置为 ON 吗 你不能 允许 url fopen 具有可变模式PHP INI SYSTEM Entry can be set in
  • iphone的TableView动态添加一行

    当我在表中选择一行时 我需要在表视图中添加新行 我应该使用以下方法吗 void insertRowsAtIndexPaths NSArray indexPaths withRowAnimation UITableViewRowAnimati
  • java.lang.ClassNotFoundException:org.apache.jsp.WEB_002dINF.pages.LandingPage_jsp

    打开项目时我遇到两个非常奇怪的错误 如果我打开登陆页面并不断刷新它 错误消息会在下面的两条消息之间交替显示 要么我得到这个 org apache jasper JasperException WEB INF pages LandingPag
  • 用于复杂写入的 Firebase 提交/回滚

    我正在使用 Firebase 编写一个金融应用程序 为了提交收据 还需要更新许多其他对象 为了使数据有效 所有数据更新都需要成功完成 如果其中一项写入出现错误 则必须回滚所有更新 例如 如果用户提交收据 则必须更新收据对象以及发票对象以及其
  • java.lang.VerifyError:在分支目标处期望有堆栈图帧

    成功编译了项目并使用 Maven 进行了构建 这是我的第一个 Maven 项目 但我不知道为什么会出现以下错误 在 tomcat 上部署战争并点击我的 url 浏览器中显示以下错误 java lang VerifyError Expecti
  • Android中,Handler是运行在主线程还是其他线程?

    我有以下代码 public class SplashScreen extends Activity private int splashTime 5000 Called when the activity is first created
  • ntext 数据的 GROUP BY

    我想看看场上有多少次MSGTEXT表中重复MMOUTBOUND 为此 我使用以下查询 SELECT MSGTEXT COUNT TotalCount FROM MMOUTBOUND GROUP BY MSGTEXT HAVING COUNT
  • Angular Material 日期选择器 - 仅月份和年份

    我希望我的角度材料日期选择器仅显示月份 年份 没有日子 这是我的日期选择器
  • Eclipse 中的 Grails 2.2.0 支持

    我正在尝试使用 eclipse jee juno 创建一个 grails 2 2 0 项目 它给了我一个错误 项目期望的 Groovy 编译器级别与工作区编译器级别不匹配 项目编译级别为 1 8 X 工作区编译器级别为 1 7 X 转到项目
  • Apache POI 加载 XSSFWorkbook 类时出错

    我正在尝试编写一个与 Excel 文档一起使用的程序 但 HSSF 格式对于我的要求来说太小了 我正在尝试转向 XSSF 但在尝试使用它时不断出现错误 我设法通过将 xmlbeans 2 3 0 jar 和 dom4j 1 6 jar 添加
  • 使用 proc_open 时从 STDIN 管道读取

    我正在尝试制作一个网站 人们可以在线编译和运行他们的代码 因此我们需要找到一种交互式方式让用户发送指令 其实大家首先想到的是exec or system 但是当用户想要输入某物时 这种方式就行不通了 所以我们必须使用proc open 例如
  • 如何以正确的顺序安装多个 .whl 文件

    我最近发现自己处于必须在没有互联网连接的机器上安装 python 项目的所有依赖项 20 的情况 我用了pip download 得到所有的 whl文件并手动传输它们 直到现在 我才完全欣赏 pip 的天才 以及它如何自行计算出依赖关系树并