无数踩坑系列(3)-配置pytorch

配置pytorch环境

  • 1. 命令一键式安装
  • 2.源码安装
    • 问题1
    • 问题2
    • 问题3
    • 问题4
  • 3.克隆一个已有环境,带pytorch
  • 4.GPU驱动版本不对

在实际开发中,想要在自己的机子上跑别人的代码;或者,在新的机子上跑自己的代码,总是面临着环境配置的问题。python配置环境时最主要的就是库的配置。配置环境的过程中会出现各种各样的状况,环境配置完全后也会应为库文件版本的不同而导致各种问题。本文记录了在最近一次环境配置过程中踩过的种种神坑。

1. 命令一键式安装

官网命令行一键安装:https://pytorch.org/

conda install pytorch torchvision cudatoolkit=9.0 -c pytorch

如果网不好的话安装着安装着,输出提示:An HTTP error occurred when trying to retrieve this URL.

2019年conda 相继关闭了清华和中科大的镜像源,所以通过在官网下载速度太慢,此情此景下:尝试用source安装,安装过程中遇到各种奇葩问题,总结如下:

2.源码安装

问题1

问题:没有安装git

The program ‘git’ is currently not installed. To run ‘git’ please ask your administrator to install

解决:终端上安装

sudo apt-get install git

问题2

问题:git缓存不够大

error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
fatal: clone of ‘https://github.com/eigenteam/eigen-git-mirror.git’ into submodule path ‘third_party/eigen’ failed

参考文档:https://blog.csdn.net/qq_34121797/article/details/79561110

问题3

问题:git 克隆到一半,因为各种原因(网不好,突然断电,缓存不够大)终止克隆,想要继续下载。

解决方案:

~/source/$ cd pytorch#进入对应的仓库目录底下,更新一遍
~/source/pytorch$ git submodule update --init --recursive

参考文档:https://blog.csdn.net/kingroc/article/details/86526150

问题4

File “setup.py”, line 749, in
build_deps()
File “setup.py”, line 323, in build_deps
cmake=cmake)
File “/home/chenyy/pytorch/tools/build_pytorch_libs.py”, line 61, in build_caffe2
rerun_cmake)
File “/home/chenyy/pytorch/tools/setup_helpers/cmake.py”, line 330, in generate
self.run(args, env=my_env)
File “/home/chenyy/pytorch/tools/setup_helpers/cmake.py”, line 107, in run
check_call(command, cwd=self.build_dir, env=env)
File “/home/chenyy/anaconda3/lib/python3.6/subprocess.py”, line 286, in check_call
retcode = call(*popenargs, **kwargs)
File “/home/chenyy/anaconda3/lib/python3.6/subprocess.py”, line 267, in call
with Popen(*popenargs, **kwargs) as p:
File “/home/chenyy/anaconda3/lib/python3.6/subprocess.py”, line 709, in init
restore_signals, start_new_session)
File “/home/chenyy/anaconda3/lib/python3.6/subprocess.py”, line 1344, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: ‘cmake’: ‘cmake’

(conda install numpy ninja pyyaml mkl mkl-include setuptools cmake cffi typing)
解决:确保你的环境中有以上支持包,并且确认该环境被激活,(如果环境没有激活就会被自己蠢死)

conda activate python36

每次装都有惊喜,会发现不同的错误,真是神了。

下面几篇文章都总结了源码安装过程中会出现的错误:
https://blog.csdn.net/hungryof/article/details/78187512
https://blog.csdn.net/tanmx219/article/details/86505741
总结的了他配置过程中的种种错误,挺好的。还提供了源码安装的卸载方法,估计之后的源码安装和这个差不多。

3.克隆一个已有环境,带pytorch

配置好pytorch 之后发现还是不能用,最后能想到的就是GPU的版本不对

解决方案,克隆一个已有的环境
参考文档:https://www.jianshu.com/p/b86c17057da8

1.将已有的环境打包成.yaml文件(切换到指定的文件夹,文件会在终端正在工作的文件夹下面生成一个.yaml文件)

conda env export > environment.yaml

2.生成指定名字的环境:

conda env create --name python362 -f environment1.yaml

->出现问题1:

Error: ‘conda’ can only be installed into the root environment

->解决:打开对应的环境,去除一些链接项,再生成.yaml文件再操作就可以了
参考文档:https://blog.csdn.net/lazybones_3/article/details/79501243

4.GPU驱动版本不对

按照:conda install pytorch torchvision cudatoolkit=10.1命令装完,发现cuda并不能用:

>>> import torch
>>> torch.cuda.is_available()
False

运行需要GPU的程序,报错信息如下:
no CUDA-capable device is detected Traceback (most recent call last):

解决:
1.查看机子的合适驱动

ubuntu-drivers devices

2.安装合适驱动

sudo apt-get install nvidia-xxx #xxx 为版本号

3.安装完后重启

sudo reboot

4.查看驱动状态

sudo nvidia-smi

参考资料:https://blog.csdn.net/flowrush/article/details/80254301

在2.安装驱动的时候,又报了一个错:E: Sub-process /usr/bin/dpkg returned an error code (1)
采用下面博文方法二修复了:

sudo apt-get update --fix-missing
sudo apt-get autoremove && sudo apt-get clean && sudo apt-get install -f

修复后重启,驱动就合适了,之前装的带cuda版本的pytorch环境动能用了。
参考资料:https://blog.csdn.net/sunshinegirl168660/article/details/72934398

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/445245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小猫的java基础知识点汇总(上)

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 2、short s1 1; s1 s11; 有没有错&#xff…

机器学习算法分类总结

机器学习方法分类总结 这篇文章只是一个类似于知识概括的文章,主要作用是帮忙梳理: 1) 分类 贝叶斯模型(Bayesian Mode) - 朴素贝叶斯算法(Naive Bayesian Mode) - 平均单依赖估计(AveragedO…

无限踩坑系列(5)-MySQLdb

MySQLdb在Python2.x 时使用的是MySQLdbpython3中这个库已经不再使用了,所有的功能都由pymysql或mysqlclient替代。所以 想在python3中配MySQLdb真是一个深的不能再深的坑了。下面记录了愚蠢的填坑过程,仅做有类似错误的参考。参考文档:https:…

后端 分页组件实例

/*** 分页相关信息*/ public class Page {//当前页码private int current1;//显示的上限private int limit10;//数据总数//用于计算页数private int rows;//路径private String path;public int getCurrent() {return current;}public void setCurrent(int current) {if (curre…

大数据学习(07)--MapReduce

文章目录目录1.MapReduce介绍1.1 什么是分布式并行编程?1.2 MapReduce模型介绍1.3 map和reduce函数2.MapReduce体系架构3.MapReduce工作流程3.1 概述3.2 MapReduce各个阶段介绍3.3 shuffle过程介绍3.3.1 shuffle过程简介3.3.2 map中的shuffle过程3.3.3 reduce中的sh…

关闭用playsound函数的WAV文件

播放声音文件 PlaySound函数应用 1.关闭用playsound函数的WAV文件 PlaySound(0,NULL,0);即可 // test2.cpp : Defines the entry point for the application.//#include "stdafx.h"#include <mmsystem.h>int APIENTRY WinMain(HINSTANCE hInstance, …

身份验证

传统身份验证的方法 HTTP 是一种没有状态的协议&#xff0c;也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端&#xff0c;客户端使用用户名还有密码通过了身份验证&#xff0c;不过下回这个客户端再发送请求时候&#xff0c;还得再验证一下。 解决的方法就是&…

Pytorch(4)-模型保存-载入-eval()

模型保存与提取1. 整个模型 保存-载入2. 仅模型参数 保存-载入3. GPU/CPU模型保存与导入4. net.eval()--固定模型随机项神经网络模型在线训练完之后需要保存下来&#xff0c;以便下次使用时可以直接导入已经训练好的模型。pytorch 提供两种方式保存模型:方式1&#xff1a;保存整…

大数据学习(08)--Hadoop中的数据仓库Hive

文章目录目录1.什么是数据仓库&#xff1f;1.1数据仓库概念1.2传统数据仓库面临的挑战1.3 Hive介绍1.4 Hive与传统数据库的对比1.5 Hive在企业中的部署与应用2.Hive系统架构3.Hive工作原理3.1 SQL转换为MapReduce作业的基本原理3.2 Hive中SQL查询转换MapReduce作业的过程4.Hive…

dubbo知识点总结 持续更新

Dubbo 支持哪些协议&#xff0c;每种协议的应用场景&#xff0c;优缺点&#xff1f;  dubbo&#xff1a; 单一长连接和 NIO 异步通讯&#xff0c;适合大并发小数据量的服务调用&#xff0c; 以及消费者远大于提供者。传输协议 TCP&#xff0c;异步&#xff0c;Hessian 序列化…

使用Linux auto Makefile自动生成的运行步骤

首先创建一个 Linux Makefile.am.这一步是创建Linux Makefile很重要的一步&#xff0c;automake要用的脚本配置文件是Linux Makefile.am&#xff0c;用户需要自己创建相应的文件。之后&#xff0c;automake工具转换成Linux Makefile.in。AD&#xff1a; 在向大家详细介绍Linux …

无限踩坑系列(6)-mySQL数据库链接错误

mySQL数据库链接错误错误1错误2长链接短连接应用场景需要一直访问mySQL数据库&#xff0c;遇到如下错误&#xff1a;错误1 释放已经释放的数据库链接conn.&#xff0c;或者&#xff0c;操作已经释放的数据库链接conn.或者失去链接后再操作数据库都可能会报这个错误 aise err.I…

初探函数式编程和面对对象式编程

文章目录目录1.函数式编程和面向对象编程概念1.1 函数式编程1.2 面向对象编程2.函数式编程和面向对象编程的优缺点2.1 函数式编程优点缺点2.2 面对对象编程优点缺点3.为什么在并行计算中函数式编程比较好3.1 什么是并行计算3.2 函数式编程兴起原因目录 1.函数式编程和面向对象…

linux常用解压和压缩文件的命令

linux常用解压和压缩文件的命令 .tar 解包&#xff1a;tar xvf FileName.tar打包&#xff1a;tar cvf FileName.tar DirName&#xff08;注&#xff1a;tar是打包&#xff0c;不是压缩&#xff01;&#xff09;———————————————.gz解压1&#xff1a;gunzip FileN…

Python外(4)-读写mat文件

读写mat文件1.读取2.写入.mat 是matlab中数据存储的标准格式&#xff0c;Python中能够通过库scipy读取和保存。导入scipy库 from scipy import io 1.读取 io.loadmat(file_name, mdictNone, appendmatTrue, **kwargs) 简便方式&#xff1a; io.loadmat(file_name) append mat–…

Linux下的xml文件的创建

创建一个xml文档流程如下&#xff1a; l 用xmlNewDoc函数创建一个文档指针doc&#xff1b; l 用xmlNewNode函数创建一个节点指针root_node&#xff1b; l 用xmlDocSetRootElement将root_node设置为doc的根结点&#xff1b; l 给root_node添加一系列的子节点&#x…

压力测试http_load 通过修改配置测试https协议成功了。

到http://www.acme.com/software/http_load/ 下载http_load &#xff0c;安装也很简单直接make;make instlall 就行。 如果你需要测试https&#xff0c;你必须将 Makefile中 # CONFIGURE: If you want to compile in support for https, uncomment these # definitions. You w…

面向对象设计与分析40讲(16)静态工厂方法模式

前面我们介绍了简单工厂模式&#xff0c;在创建对象前&#xff0c;我们需要先创建工厂&#xff0c;然后再通过工厂去创建产品。 如果将工厂的创建方法static化&#xff0c;那么无需创建工厂即可通过静态方法直接调用的方式创建产品&#xff1a; // 工厂类&#xff0c;定义了静…

搜索详解

搜索 一.dfs和bfs简介 深度优先遍历(dfs) 本质&#xff1a; 遍历每一个点。 遍历流程&#xff1a; 从起点开始&#xff0c;在其一条分支上一条路走到黑&#xff0c;走不通了就往回走&#xff0c;只要当前有分支就继续往下走&#xff0c;直到将所有的点遍历一遍。 剪枝&a…

Python外(5)-for-enumerate()-zip()

for循环小技巧技巧1&#xff1a;enumerate()技巧2&#xff1a;打包两个可遍历数据&#xff0c;一起循环-zip()技巧1&#xff1a;enumerate() 在使用pytorch训练网络的过程中&#xff0c;官方教程给出了 for i, data in enumerate(trainloader, 0): 这涉及到enumerate函数的使用…