微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyTorch下载未保存到Pipfile或Piplock

如何解决PyTorch下载未保存到Pipfile或Piplock

我目前正在使用pipenv维护特定项目中使用的Python软件包。到目前为止,我尝试过的大多数下载均按预期进行;也就是说,我输入“ pipenv install [package]”,它将包安装到虚拟环境中,然后将包信息记录到pipfile和piplock中。但是,我在安装PyTorch时遇到了一些问题。

我曾尝试运行“ pipenv install火炬”,但是每次锁定步骤失败时。相反,我尝试直接从PyTorch网站强制下载:“ pipenv run pip install torch === 1.6.0 torchvision === 0.7.0 -f https://download.pytorch.org/whl/torch_stable.html”

它实际上已安装!如果我运行“ pipenv graph”,它将显示割炬和割炬视觉及其相关性。但是仍然存在一个问题:火炬和火炬视觉都没有保存到pip文件中。关于如何实现这一目标的任何想法吗?

解决方法

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

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

不幸的是,当我发布此内容时,pipenv does not have an equivalent for pip's -f/--find-links option。一种解决方法是手动找到您需要的正确火炬轮 (.whl) 链接,对于 pytorch,这通常意味着从 https://download.pytorch.org/whl/torch_stable.html 中寻找正确的链接(我将展示如何在下面做这个)。

然后,使用 specific package versions 和指向轮子的 URL 创建/修改 Pipfile:

[[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","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 URL,然后检查它使用了哪个轮子。

  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. 从虚拟环境中移除 pip install 相关的东西
    $ pipenv clean
    
  3. 重复安装但使用 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/”+第 1 步中的 .whl 文件名组合起来

首先使用 pip install 然后将其复制到 pipenv 似乎有点倒退,但这里的目标是让 pipenv 更新 Pipfile 和 Pipfile.lock(以支持确定性builds) 并“记录”您的 env 以进行版本控制。

,

您可以通过将 PyTorch 源添加到您的 pip 文件中来安装它,如下所示:

[[source]]
name = "pytorch"
url = "https://download.pytorch.org/whl/torch_stable.html"
verify_ssl = false

[packages]
torch = {index = "pytorch",version = "==1.9.0"}
torchvision = {index ="pytorch",version= "==0.10.0"}
torchaudio = {index ="pytorch",version= "==0.9.0"}

[requires]
python_version = "3.7"

然后运行 ​​pipenv install

注意:索引是指源名称。

你可以在任何类似的情况下做到这一点: 例如:安装pytorch-geometric:

[[source]]
name = "pytorch-geometric"
url = "https://pytorch-geometric.com/whl/torch-1.9.0+cu111.html"
verify_ssl = false
[packages]

torch-scatter = {index= "pytorch-geometric",version= "==2.0.7"}
torch-sparse = {index= "pytorch-geometric",version= "==0.6.10"}
torch-cluster = {index= "pytorch-geometric",version= "==1.5.9"}
torch-geometric = {index= "pytorch-geometric",version= "==1.3.2"}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。