如何使用pipenv安装PyTorch并将其保存到Pipfile和Pipfile.lock?

2024-01-02

我目前正在使用 Pipenv 来维护特定项目中使用的 Python 包。到目前为止,我尝试过的大多数下载都按预期运行;也就是说,我输入pipenv install [package]它将包安装到虚拟环境中,然后将包信息记录到 Pipfile 和 Pipfile.lock 中。

但是,我在安装 PyTorch 时遇到了一些问题。

我尝试过跑步pipenv install torch,但每次锁定步骤都会失败。相反,我尝试使用以下命令直接从 PyTorch 网站强制下载

pipenv run pip install torch===1.6.0 torchvision===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html

它确实安装了!如果我跑pipenv graph它显示了 torch 和 torchvision 及其依赖项。但仍然存在一个问题:torch 和 torchvision 都没有保存到 Pipfile 和 Pipfile.lock 中。

关于如何实现这一点有什么想法吗?


当你使用pipenv run pip install <package>,跳过自定义pipenv更新Pipfile和Pipfile.lock的操作。基本上相当于做一个简单的pip install <package>就好像你没有/使用一样pipenv.

更新 Pipfile 的唯一方法是使用pipenv install.

不幸的是,当我发布这篇文章时,pipenv没有对应的pip's -f/--find-links option https://stackoverflow.com/q/57647989/2745495。最好的解决方案是将 pytorch 的“https://download.pytorch.org/whl/” URL 指定为替代包索引 https://pipenv-fork.readthedocs.io/en/latest/advanced.html#specifying-package-indexes,通过将其添加为[[source]]在你的 Pipfile 中。看来自穆罕默德的回答 https://stackoverflow.com/a/68336073/2745495 and 米奇·麦克马伯斯的回答 https://stackoverflow.com/a/71181971/2745495描述了如何做到这一点。我建议尝试这些答案。

一个不太优雅且相当糟糕的替代方案是手动找到正确的火炬轮(.whl)您需要的链接,这通常意味着从以下位置查找正确的链接https://download.pytorch.org/whl/torch_stable.html https://download.pytorch.org/whl/torch_stable.html。然后,使用以下命令创建/修改 Pipfile具体软件包版本 https://pipenv-fork.readthedocs.io/en/latest/basics.html#specifying-versions-of-a-package以及轮子的 URL:

[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[requires]
python_version = "3.8"

[packages]
torch = {version = "==1.6.0", file = "https://download.pytorch.org/whl/cpu/torch-1.6.0-cp38-none-macosx_10_9_x86_64.whl"}
torchvision = {version = "==0.7.0", file = "https://download.pytorch.org/whl/torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl"}

然后就做正常的事pipenv install.

您可以使用以下命令确认安装pipenv install --verbose:

Collecting torch==1.6.0
  ...
  Looking up "https://download.pytorch.org/whl/cpu/torch-1.6.0-cp38-none-macosx_10_9_x86_64.whl" in the cache
  Current age based on date: 8
  Starting new HTTPS connection (1): download.pytorch.org:443
  https://download.pytorch.org:443 "GET /whl/cpu/torch-1.6.0-cp38-none-macosx_10_9_x86_64.whl HTTP/1.1" 304 0
  ...
  Added torch==1.6.0 from https://download.pytorch.org/whl/cpu/torch-1.6.0-cp38-none-macosx_10_9_x86_64.whl#egg=torch 
...
Successfully installed torch-1.6.0

Collecting torchvision==0.7.0
  ...
  Looking up "https://download.pytorch.org/whl/torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl" in the cache
  Current age based on date: 8
  Starting new HTTPS connection (1): download.pytorch.org:443
  https://download.pytorch.org:443 "GET /whl/torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl HTTP/1.1" 304 0
  ...
  Added torchvision==0.7.0 from https://download.pytorch.org/whl/torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl#egg=torchvision
...
Successfully installed torchvision-0.7.0

这还会向 Pipfile.lock 添加条目:

"torch": {
    "file": "https://download.pytorch.org/whl/cpu/torch-1.6.0-cp38-none-macosx_10_9_x86_64.whl",
    "hashes": [
        ...
    ],
    "index": "pypi",
    "version": "==1.6.0"
},
"torchvision": {
    "file": "https://download.pytorch.org/whl/torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl",
    "hashes": [
        ...
    ],
    "index": "pypi",
    "version": "==0.7.0"
}

这样,您现在就拥有了 Pipfile 和 Pipfile.lock,您可以在开发应用程序时将其签入/提交到版本控制并跟踪/管理。

您还可以从命令行执行此操作,而不是手动编辑 Pipfile:

(temp) $ pipenv install --verbose "https://download.pytorch.org/whl/torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl"
Installing https://download.pytorch.org/whl/torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl...
...
Adding torchvision to Pipfile's [packages]...
✔ Installation Succeeded

这还应该向 Pipfile 添加一个条目:

[packages]
...
torchvision = {file = "https://download.pytorch.org/whl/torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl"}

当然,这一切都取决于找出您真正需要的轮子。这可以通过首先使用普通的pip install <package>-f/--find-links选项针对https://download.pytorch.org/whl/torch_stable.html https://download.pytorch.org/whl/torch_stable.htmlURL,然后检查它使用哪个轮子。

  1. 首先我们先来了解一下正确的.whl文件与pip install
    $ pipenv run pip install --verbose torchvision==0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
    Looking in links: https://download.pytorch.org/whl/torch_stable.html
    ...
    Collecting torchvision==0.7.0
      Downloading torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl (387 kB)
    ...
    
  2. Remove pip install-来自虚拟环境的东西
    $ pipenv clean
    
  3. Repeat installation but using pipenv install
    $ pipenv install --verbose "https://download.pytorch.org/whl/torchvision-0.7.0-cp38-cp38-macosx_10_9_x86_64.whl"
    
    • 只需组合“https://download.pytorch.org/whl/”+.whl步骤 1 中的文件名

使用它可能看起来有点倒退pip install首先然后将其复制到pipenv,但这里的目标是让pipenv更新 Pipfile 和 Pipfile.lock(以支持确定性构建)并“记录”您的环境以进行版本控制。

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

如何使用pipenv安装PyTorch并将其保存到Pipfile和Pipfile.lock? 的相关文章

  • pandas Wide_to_long 后缀参数

    我对在 pandas 中使用 Wide to long 时的参数有疑问 有一个参数叫suffix我不明白 在文档中它说 后缀 str 默认 d 捕获所需后缀的正则表达式 d 捕获数字后缀 没有数字的后缀可以用否定字符类 D 指定 您还可以进
  • Python GTK + webkit - 在 gtk.main() 之后插入 JavaScript

    我在终端中尝试了这个 一切正常 但是如果我在脚本内运行这个 我无法在 gtk main 之后插入 JavaScript import gtk import webkit w gtk Window b webkit WebView w add
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • 无法使用 BeautifulSoup 和 Requests 抓取下拉菜单

    我想抓取百年灵网站上的产品页面以获取各种信息 示例页面 https www breitling com gb en watches navitimer b01 chronograph 46 AB0127211C1A1 https www b
  • 使用 pandas 将字符串对象转换为 int/float

    import pandas as pd path1 home supertramp Desktop 100 life 180 data csv mydf pd read csv path1 numcigar Never 0 1 5 Ciga
  • Paramiko SSHException 通道已关闭

    我一直在使用 Paramiko 在 Linux Windows 机器上发送命令 它可以很好地在 Ubuntu 机器上远程执行测试 但是 它不适用于 Windows 7 主机 以下是我收到的错误 def unit for event self
  • Perl 是否有相当于 Python 的 `if __name__ == '__main__'` 的功能?

    有没有一种方法可以确定当前文件是否是 Perl 源中正在执行的文件 在 Python 中 我们使用以下结构来做到这一点 if name main This file is being executed raise NotImplemente
  • 使用多级解决方案计算二维网格中的最近邻

    我有一个问题 在 x y 大小的网格中 我提供了一个点 并且我需要找到最近的邻居 在实践中 我试图在 pygame 中找到距离光标最近的点 该点跨越颜色距离阈值 计算如下 sqrt rgb1 0 rgb2 0 2 rgb1 1 rgb2 1
  • Python——捕获异常的效率[重复]

    这个问题在这里已经有答案了 可能的重复 Python 常见问题解答 异常有多快 https stackoverflow com questions 8107695 python faq how fast are exceptions 我记得
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 在 iPython/pandas 中绘制多条线会生成多个图

    我试图了解 matplotlib 的状态机模型 但在尝试在单个图上绘制多条线时遇到错误 据我了解 以下代码应该生成包含两行的单个图 import pandas as pd import pandas io data as web aapl
  • 如何使用 Celery 多工作人员启用自动缩放?

    命令celery worker A proj autoscale 10 1 loglevel info启动具有自动缩放功能的工作人员 当创建多个工人时 me mypc projects x celery multi start mywork
  • 如何在子 shell 中运行 cmd.exe 批处理文件

    我有一个批处理文件 通常像这样调用 longjob cmd gt result txt 2 gt 1 这工作正常 但脚本在执行过程中更改了目录 将我的 shell 留在该目录中 这很麻烦 有没有办法在子 shell 中运行命令 同时仍然允许
  • 将列表中的 None 替换为最左边的非 none 值

    Given a None 1 2 3 None 4 None None I d like a None 1 2 3 3 4 4 4 目前我已经用以下方法强制它 def replaceNoneWithLeftmost val last Non
  • 如何正确导入主代码和模块中同时使用的模块?

    假设我有一个主脚本 main py 它导入另一个 python 文件import coolfunctions另一个 import chores 现在 假设 Coolfunctions 也使用家务活中的东西 因此我声明import chore
  • 根据第三个变量更改散点图中的标记样式

    我正在处理多列字典 我想绘制两列 然后根据第三列和第四列更改标记的颜色和样式 我很难改变 pylab 散点图中的标记样式 我的方法适用于颜色 不幸的是不适用于标记样式 x 1 2 3 4 5 6 y 1 3 4 5 6 7 m k l l
  • 在Python中连续解析文件

    我正在编写一个脚本 该脚本使用 HTTP 流量行解析文件 并取出域 目前仅将它们打印到屏幕上 我正在使用 httpry 将流量连续写入文件 这是我用来删除域名的脚本 usr bin python import re input open r
  • python dicttoxml 多次使用相同的键

    我正在尝试做如下所示的 xml
  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • 在父类中访问子类变量

    我有一个父类和一个继承的子类 我想知道如何访问我的父类中的子类变量 我尝试了这个但失败了 class Parent object def init self print x class Child Parent x 1 x Child Er

随机推荐

  • Apache-POI 对 Excel 中的行进行排序

    我想按字符串列之一对工作表中的行进行排序 我尝试使用 Sheet shiftRows 方法来实现这一点 但我无法做到这一点 它不会在我的方法中切换行的位置 我的代码有什么问题吗 或者也许有更好的方法按 Excel 中的任何字符串列对行进行排
  • 自动高度 div 上的 Img 高度

    https jsfiddle net ry9gyb8n https jsfiddle net ry9gyb8n 大家好 几周以来我一直在尝试解决这个问题 我有一个自动高度容器 容器中的左侧 div 是自动高度 因为它里面可以有各种不同的内容
  • 如何将数字的后3位转换为0

    如何将数字的后3位转换为0 例如 3444678 到 3444000 我可以这样做 整数 3444678 1000 1000 3444000 但除法和乘法可能代价高昂 还有其他解决办法吗 你可以尝试 n n 1000 但模运算符可能与除法一
  • NewtonSoft Json DeserializeObject 空 Guid 字段

    我正在使用 ASP NET MVC C 和 HTML CSS jQuery KnockoutJs 前端 我的 HTML 页面上有一个模式联系表单 这个想法是 如果我创建一个新的联系人 模式表单会弹出空白值 包括空白的隐藏 ID 字段 如果我
  • cakephp、jquery、.ajax()、数据类型:json

    cakephp 控制器功能是否可以在没有视图的情况下完成 我试图让我的服务器返回一个不是字符串的数据类型 而是一个数组 我的控制器功能 function test this gt layout plain task Numbers uno
  • 如何垂直对齐多个表格列

    我有多个具有以下结构的表 table tr td year td tr tr td semester td td semester td tr tr td course type td td course td td course type
  • 在运行时检查宏是否已定义

    在开发静态库的过程中 遇到了测试库函数的需要 功能检查不是问题 主要问题是测试库提供的每个宏定义 我从这样的代码开始 For non vital macro OS WORDSIZE detections if defined BXI ARC
  • 在开始编码之前如何处理并发[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在编写 Java 程序 目前正在调试的并发问题比我想要处理的要多得多 我想问 你在设计程序时如何处理并发问题 就我而言 这是一个相
  • 处理多版本软件发布管理的最佳方法是什么?

    我的公司为房地产机构构建了一个 Web 应用程序 最初使用经典 ASP 进行编码 然后逐渐迁移到 NET 本质上 它是一个具有后端数据库的网站 与自定义 Windows 服务 DLL 混合 NET 应用程序的相当标准 在我过去的公司中 我们
  • JavaScript 和辅助功能

    作为一名网络开发人员 我从事的许多项目都属于政府的保护范围 因此受到政府的监管508 无障碍 http www section508 gov 法律 有时W3C 可访问性 http www w3 org TR WCAG 指导方针 在满足这些要
  • SkipListener 中未调用 @OnSkipInWrite

    我正在读取 csv 文件并使用 Spring Batch 将数据插入数据库 读取 处理和写入 我在 itemWriter 类中使用 jpaRepository save 将数据保存到数据库中 我试图在 OnSkipInWrite 方法中捕获
  • 使用 java.util.logging 进行 Commons 日志记录

    我正在尝试使用公共日志记录并希望使用 java util logging 作为底层机制 日志测试 java import org apache commons logging public class LogTest public stat
  • 仅对基于 servlet 的 web 应用程序中的某些页面使用 HTTPS

    我有一个基于 servlet 的 web 应用程序在 Tomcat 6 服务器上运行 URL 方案是 HTTPS 整个站点当前通过 HTTPS 提供服务 但我真正想做的是仅为某些操作 例如购买和登录 设置 HTTPS Tomcat 中是否有
  • 如何在 React 中为 svg 图像添加颜色

    我有一个图标列表 我想将图标颜色更改为白色 默认情况下我的图标是黑色的 大家有什么建议吗 我通常使用 fill white 在我的 css 中 但现在我在 React 中执行此操作 它不起作用 import React from react
  • writeRaster 输出文件大小

    我有一个函数 可以将多波段图像作为栅格砖对象读取 遍历波段进行各种计算 然后将栅格写出作为新的 tif 所有这些都工作正常 但新图像文件的文件大小大约是原来的四倍 我假设是因为原始图像有 4 个波段 我想知道 writeRaster 函数中
  • 如何在 Eclipse 中配置 Java -D 标志

    例如 java Dcom siebel management jmxapi cfgFileName C monitor 1srvr xml Component 在哪里 在 Eclipse 中 使用名称和值配置 D 标志 Component是
  • 如何摆脱此错误:并非所有代码路径都返回值?

    int search string mat int n string x set indexes for top right element for int i 0 i
  • 使用带有 UNC 路径的 Pushd 和 Popd 命令

    我正在运行以下批处理文件来运行存储的包SQL我得到了UNC Paths are not supported错误 如果我在服务器上运行它 它会正确运行 如果我与其他用户共享它 则不会 我不想创建地图驱动器 我一直在读关于pushd命令 它可能
  • Modbus TCP Android 应用程序

    我正在开发 Android 应用程序来在 tcp ip modbus 的帮助下控制 PLC 有人对此有很好的教程吗 Modbus协议转义线程 Android Jamod https stackoverflow com questions 1
  • 如何使用pipenv安装PyTorch并将其保存到Pipfile和Pipfile.lock?

    我目前正在使用 Pipenv 来维护特定项目中使用的 Python 包 到目前为止 我尝试过的大多数下载都按预期运行 也就是说 我输入pipenv install package 它将包安装到虚拟环境中 然后将包信息记录到 Pipfile