自己搭深度学习环境踩坑血泪史

2023-05-16

自己搭深度学习环境踩坑的血泪史

  • 从一个沮丧的事情开始
    • 问题1 : 强行更新了一次win10后, 双系统里的ubuntu的启动项就没了,直接进入win10系统
    • 问题2 : sudo apt-get update 总是超时
    • 问题3 : conda install 和 pip install 总是超时
    • 问题4 : conda 里的环境不会管理,各种包多版本下一个环境里,同类多个版本冲突, 异类多个版本不兼容,怎么都运行不通,最后心态爆炸
    • 问题5 : torch.cuda.is_available() 总是false, 明明以前还可以true
    • 问题6 : ubuntu18.04 wifi 莫名其妙网速很慢或者图标变成问号
    • 问题7 : python opencv>=4.0 怎么下载?
    • 问题8: apt-get update 对英伟达的源超时
    • 问题9: github上clone 或者wget太慢了
    • 問題10: TX2 或者 arm 架構下如何配置ubuntu的源
    • 完整的搭建过程与参考链接

从一个沮丧的事情开始

本人去年留学刚毕业进一家小公司做视觉算法,小公司的特点就是没有爸爸带,所以只能秉持着只要头够铁,坑和墙就拦不住你的心态去面对问题,最开始的就是头疼的配环境了.在这里总结一下,时间宝贵,这种坑不值得跳的.只看配环境步骤去文末.

问题1 : 强行更新了一次win10后, 双系统里的ubuntu的启动项就没了,直接进入win10系统


总的思路:做个ubuntu启动usb,然后使用boot-repair 是我见过最low但最好操作的方法了
step1:在[ubuntu的官网](https://ubuntu.com/download#download)上下载一个系统的镜像文件: ubuntu-18.04-desktop-amd64.iso step2:在[rufus的官网](https://rufus.ie/)上下载rufus这个启动盘制作的程序 rufus-3.10.exe step3:制作ubuntu启动盘如图(盗个图)

在这里插入图片描述
step4: 只做好了以后重启电脑(我的电脑是dell的)所以看见dell标志的时候疯狂按f12进入bios, 然后把启动UEFI点上就好了搞好就妥了, 然后退出,你电脑就会重新启动,进入到启动盘的ubuntu系统里
在这里插入图片描述
step5: 点try ubuntu,然后就进去了一个空荡荡的ubuntu 系统里 在这里插入图片描述
step6: 连上wifi, ctrl+alt+t 打开终端(terminal), 输入

sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

等他下载完,要启动它,输入

boot-repair

step7:出现这张图在这里插入图片描述
点击 Recommended repair 等它运行完,重启电脑,看见dell 的时候疯狂按F12,会进入启动选项,里面就有ubuntu 和 windows 了,貌似如果不选,默认会进入ubuntu 或者 grub启动选项,问题解决.

问题2 : sudo apt-get update 总是超时

原因估计是国内墙的问题,没有办法访问到国外源(保存更新内容的服务器),所以你更新的时候会一直超时(基本国内所有超时问题都是这个情况),所以要换别的源来访问(国内有些大公司会拿服务器专门保存这些内容,比如阿里)

1.首先查看自己的ubuntu系统的codename,直接导致你更新的源是否对你的系统起效果,查看方法:
在这里插入图片描述
这里的codename 就是版本代号的意思(就像你听过的各种行动代号什么红海啊,猎鹰啊,战狼啊,刺蛇啊),我这里就是bionic (还有很多别的代号如devel, focal, trusty什么的很中二),但它确保了你到底要对哪个版本的系统来更新

uname -m && cat /etc/*release

查看基本信息用这个命令也是可以的也很齐全了
在这里插入图片描述

  1. 点开这个网页:http://mirrors.aliyun.com/ubuntu/dists/
    该网页显示了阿里云支持的ubuntu系统下各个Codename版本,确保自己的Codename在该网页中存在(基本不会漏的)

  2. 备份系统源:

cd /etc/apt
sudo mv sources.list sources.list_bak

这个mv就是剪切的意思,把你原来的写着源的地址的文件(sources.list)保存到 sources.list_bak文件里一方哪天阿里云没了(狗头)你还能用上原来的

  1. 添加新的源文件:
sudo gedit sources.list 

会打开一个空文本
并添加以下内容:

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

注意,每一行的trusty应该用第一步查看得到的Codename来代替,这个是最关键的,因为如果你自己上网查的话可能会查到些过期的教程,直接让你改成他那个年代版本代号的源地址,就比如下面的这个trusty,你照做了还是崩.千万注意.

  1. 保存并且输入
sudo apt-get update

更新成功,而且基本所有apt-get 的命令都可以用了,它目测只和ubuntu的源有关

  1. 说说大概的理解
    这个/etc/apt/sources.list是一个普通可编辑的文本文件,保存了ubuntu软件更新的源服务器的地址.
    deb是Unix系统(其实主要是Linux)下的安装包,基于 tar 包,每一行的开头是deb或者deb-src,分别表示直接通过.deb文件进行安装和通过源文件的方式进行安装。deb或者deb-src字段之后,是一段URL,之后是五个用空格隔开的字符串,分别对应相应的目录结构。在浏览器中输入http://mirrors.aliyun.com/ubuntu/,并进入dists目录,可以发现有5个目录和前述sources.list文件中的第三列字段相对应。任选其中一个目录进入,可以看到和sources.list后四列相对应的目录结构。其实就在服务器(网盘上根据目录结构找文件罢了)更多内容可以使用man source.list获得。
    下面贴我查过的链接:
    这个大佬的教程贼6, 无缝连招,照做就对了:
    @Michel4Liu: https://blog.csdn.net/Michel4Liu/article/details/80744312
    另一些资源:
    @JeanCheng: https://blog.csdn.net/gatieme/article/details/52829907
    @juejiang: https://www.cnblogs.com/jiangz/p/4076811.html

问题3 : conda install 和 pip install 总是超时

这个和问题2的原因一样,你上不了国外的网,但别担心总有人默默的为你准备好了一切,换个清华给你开放的源(亲测可以用)

  1. conda换清华源
    对于conda我们使用清华大学的TUNA提供的Anaconda 仓库的镜像.TUNA仓库官方地址(里面也有教程~): https://mirror.tuna.tsinghua.edu.cn/help/anaconda/
    在这里插入图片描述
    在已经下载好Anaconda的情况下,打开终端输入如下代码:

    conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
    conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
    conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
    conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
    conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/  #pytorch源,需要的加
    
    conda config --set show_channel_urls yes
    

    搞定,起飞!所有的conda install 立马可以用了.

    最后,回首了解一下一些conda 的命令:

    conda config --show
    

    能够显示出所有conda的config信息,当然这也写在了.condarc文件里.

    换回默认源(删除所有添加的源):conda config --remove-key channels
    

    参考文献:
    @dale丶无双 https://blog.csdn.net/weixin_39278265/article/details/84782550
    @SauryGo https://blog.csdn.net/sean2100/article/details/80998643

  2. 为pip更换阿里源,或者豆瓣源
    首先先执行

    mkdir ~/.pip
    

    首先执行

    mkdir ~/.pip
    之后执行

    cat > ~/.pip/pip.conf << EOF
    

    然后依次输入下面4行(2选1)
    阿里:

    [global]
    trusted-host=mirrors.aliyun.com
    index-url=https://mirrors.aliyun.com/pypi/simple/
    EOF
    

    豆瓣:

    trusted-host = pypi.douban.com
    index-url = http://pypi.douban.com/simple
    EOF
    

    效果图如下图所示: 盗个大佬的图~
    在这里插入图片描述
    问题解决

问题4 : conda 里的环境不会管理,各种包多版本下一个环境里,同类多个版本冲突, 异类多个版本不兼容,怎么都运行不通,最后心态爆炸


这里有个conda 和 pip 的常识介绍,当小说看,多个理解就好了David 9的博客

最重要的一句话是: pip可以允许你在任何环境中安装python包(跨平台的python工具管理器),而conda允许你在conda环境中安装任何语言包(包括c语言或者python)(指定环境下的通用工具管理器)。

剩下就是大白话说说怎么解决环境冲突的问题,利用conda 可以新建一个虚拟的环境,然后在这个环境里配置你想要的各种包.
例子:
你要跑这个https://github.com/MaybeShewill-CV/lanenet-lane-detection
先创建一个虚拟环境:

conda create -n lanenet python==3.5

进入这个环境:

conda activate lanenet

查看有哪些包:

conda list

看看anaconda里有没有打包好的包,如cuda9.0:

conda search cuda

有哦~
在这里插入图片描述
那么开始下载:

conda install cudatoolkit==9.0
conda install cudnn==7.0.5

发现conda 下不来的那么我们用pip下

pip install -r  \
tensorflow==1.10.0
numpy==1.15.1
tqdm==4.28.1
glog==0.3.1
easydict==1.9
tensorflow_gpu==1.15.2
matplotlib==3.0.2
opencv==4.0.0
scikit_learn==0.21.1

下好了以后查看这个环境里的包有哪些:

conda list

弄错了弄乱了 fuck it 了,删除环境

conda remove -n lanenet --all

各种操作可以在这个大佬这里找到:
@王诗翔 https://www.jianshu.com/p/f0602213f400


问题5 : torch.cuda.is_available() 总是false, 明明以前还可以true


百分之99碰到这个问题的都是因为你的英伟达显卡驱动过期了(因为当时自己查了好一阵,答案就只有这个,是不是很恐怖),但是有些人会问,不对啊,我之前一直用这个驱动就没动过,显卡也是原来的显卡,nvidia-smi 一样可以显示我可怜的1060唉
那么很可能是你在更新anaconda 的时候不小心把相应的包如cudnn cudatoolkit pytorch什么更新了,在新一版本的包上,你的显卡驱动可能就不适配了,但是你可以更新一下你的驱动去更新的版本去适配.
之前找到一个很像这个链接的一个博客写的超棒的,查记录现在找不到了,找到一个类似的,我用的就是这第一个链接里的方法二,驱动从435 升到了440, 但是貌似这里没有关于删除旧驱动的步骤
@Linux社区 https://www.linuxidc.com/Linux/2019-02/157170.htm
@聚散流沙 https://www.cnblogs.com/youpeng/p/10887346.html


问题6 : ubuntu18.04 wifi 莫名其妙网速很慢或者图标变成问号

  1. 在终端运行:
sudo gedit /etc/modprobe.d/iwlwifi.conf
  1. 在打开的这个配置文件中空白处添加:options iwlwifi 11n_disable=8
  2. 保存文件并重启。

问题7 : python opencv>=4.0 怎么下载?

默认pip下的opencv 就已经是4.0+了,所以直接

pip install opencv-python

搞定

问题8: apt-get update 对英伟达的源超时

add-apt-repository ppa:graphics-drivers/ppa
apt-get update

问题9: github上clone 或者wget太慢了

把github的地址换成github.com.cnpmjs.org这个网址
当然还有别的备选:

hub.fastgit.org
github.qichifun.workers.dev

例子:

git clone https://github.com.cnpmjs.org/AlexeyAB/darknet.git

变成

git clone https://github.com.cnpmjs.org/AlexeyAB/darknet.git

wget 也是一样就行

問題10: TX2 或者 arm 架構下如何配置ubuntu的源

哇在tx2下打字賊難受,sb 谷歌拼音只有繁體我也是福了
其實和上面的配置源過程差不多, 只需要注意arm64架構下有一個專門的國內源的地址:

  1. 备份系统源:
cd /etc/apt
sudo mv sources.list sources.list_bak

这个mv就是剪切的意思,把你原来的写着源的地址的文件(sources.list)保存到 sources.list_bak文件里一方哪天阿里云没了(狗头)你还能用上原来的

  1. 添加新的源文件:
sudo gedit sources.list 

会打开一个空文本
并添加以下内容:

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse

依然,每一行的bionic其實也是所謂的codename, 应该用第一步查看得到的Codename来代替,这个是最关键的,因为如果你自己上网查的话可能会查到些过期的教程,直接让你改成他那个年代版本代号的源地址,就比如下面的这个trusty,你照做了还是崩.千万注意.




完整的搭建过程与参考链接


这个大佬的回答亲测哪怕从中间开始跟(没必要重装系统)都可以一遍搭好,非常细腻清爽,这里放上链接
https://zhuanlan.zhihu.com/p/51373519

下面是参考资料
https://help.ubuntu.com/community/Boot-Repair
https://askubuntu.com/questions/655011/windows-10-upgrade-kills-grub-and-boot-repair-doesnt-help

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

自己搭深度学习环境踩坑血泪史 的相关文章

随机推荐

  • 树莓派利用串口进行通信

    树莓派串口通信 我用的是树莓派3b 43 型号 xff0c 网上各种各样的修改方式来使得树莓派的串口可以工作 xff0c 过于混乱 xff0c 还有的教程甚至会被树莓派系统搞崩溃 xff0c 尤其是树莓派实验室那里的中文教程 xff0c 是
  • Android系统学习(六)------裁剪Android系统

    你好 xff01 这里是风筝的博客 xff0c 欢迎和我一起交流 经过前面几篇博客的编译步骤 xff0c 成功的编出了Android系统 xff0c 但是发现编出来的system img有点大了 xff0c 有差不多1 7G xff0c 怎
  • 用postman批量执行post请求数据

    今天接到一个任务 xff0c 需要在同一个url中执行83次不同的post请求 xff0c 而且需要连续执行3次 xff0c 如果一个一个点击 xff0c 岂不是不符合 xff0c 摸鱼大王的风格 xff0c 思考片刻之后 xff0c 决定
  • 使用python批量发送post请求

    usr bin env python import requests url 61 34 http 192 168 26 xxx 34 header 61 39 Connection 39 39 close 39 39 Accept 39
  • 关于A 全球大气光 atmosphere light 算法总结

    由于大气散色所用引起的光源的特性 随着距离的增大而增强 A其实为无穷远处的一个大气光源 xff0c 比如天空 xff0c 这应该不是指天空中的云而是近地天空 由于各种去雾算法不同对A的依赖可能也不相同 我看到有几种方法对在去雾算法中应用 x
  • 解决树莓派开机黑屏不显示桌面问题

    一 设备状态 xff1a 以前桌面使用正常 xff0c 通过ssh进行安装pyqt5后导致桌面开机黑屏 二 所使用设备为 xff1a 树莓派4B 43 2021 05 07 raspios buster armhf img 三 定位问题 x
  • 树莓派Linux固定多USB设备号相同厂家设备和不同设备(包括一个USB设备两个设备名称号的情况)

    目录 一 问题说明 二 解决思路 三 开干 一 问题说明 在使用USB摄像头时 xff0c 由于使用了两个摄像头 xff0c 故此在上电启动后 xff0c 设备号会发生变化 xff0c 比如设备1之前时video0 xff0c 有的时候上电
  • FreeRTOS学习笔记-流缓冲区(FreeRTOS中文官网)

    https www freertos org zh cn cmn s RTOS stream buffer API html RTOS 流缓冲区 API RTOS 流缓冲区 API 函数 xff1a xStreamBufferCreate
  • FreeRTOS学习笔记-消息缓冲区(FreeRTOS中文官网)

    RTOS消息缓冲区 API RTOS 消息缓冲区 API 函数 xff1a xMessageBufferCreate xMessageBufferCreateStatic xMessageBufferSend xMessageBufferS
  • ubuntu系统X86环境下配置TX2的ARM环境的交叉编译链

    总步骤 安装qtcreator的IDE安装aarch64 linux gnu g 43 43 交叉编译链下载Qt库的源码 xff0c 配置编译选项 xff0c 编译生成针对TX2的ARM环境的qmake工具配置qtcreator xff0c
  • ROS中Eigen库的引用

    在CmakeList txt中添加两个地方 find package Eigen REQUIRED include directories Eigen INCLUDE DIR 如果找不到Eigen xff0c 我们将第一句改成 find p
  • ROS tf使用

    1 静态tf发布 lt node pkg 61 34 tf 34 type 61 34 static transform publisher 34 name 61 34 link1 link2 broadcaster 34 args 61
  • SLAM算法配置——使用Realsense D435i结合ROS跑通ORB-SLAM2的RGB-D节点

    ORB SLAM2源地址 配置环境依赖 Pangolin xff0c OpenCV xff0c Eigen3 xff0c DBoW2 and g2o xff08 源代码里有 xff0c 不用自己装 xff09 xff0c ROS xff08
  • 代码编写及阅读规范

    阅读常识 1 C语言中在函数名或关键字前加下划线 一般情况是标识该函数或关键字是自己内部使用的 xff0c 与提供给外部的接口函数或关键字加以区分 规范 综述 C 43 43 是一门十分复杂并且威力强大的语言 xff0c 使用这门语言的时候
  • 流媒体开发之路

    其实很早之前 xff0c 就想写属于自己的博客 xff0c 大二就有了CSDN账号 xff0c 很讽刺的是 xff0c 工作几年了 xff0c 账号里面的内容竟然和小鲜肉脸一样干净 干净的让人尴尬 回顾自己的这几年的开发之路 xff0c 接
  • matlab图像处理实例详解---note

    1 直方图均衡及直方图规定化 可以优化图像的亮度及gamma效果 2 图像的标准差 当图像越清晰的时候 xff0c 图像的标准差就越大 是否可以用来做af的判定标准 作为fv的值 另外是否可以用图像的相关系数作为caf的一个trigger
  • promise限制并发请求数量

    所谓并发请求 xff0c 就是指在一个时间点多个请求同时执行 当并发的请求超过一定数量时 xff0c 会造成网络堵塞 xff0c 服务器压力大崩溃或者其他高并发问题 xff0c 此时需要限制并发请求的数量 假如等待请求接口1000个 xff
  • 一个跨平台的 C++ 内存泄漏检测器(转载)

    一个跨平台的 C 43 43 内存泄漏检测器 吴咏炜 adah 64 netstd com 2004 年 3 月 内存泄漏对于C C 43 43 程序员来说也可以算作是个永恒的话题了吧 在Windows下 xff0c MFC的一个很有用的功
  • printf和wprintf、printf输出结束标识符、c++按值返回临时对象是否是const的实验

    ifndef TEST H define TEST H include lt iostream gt include lt string gt using namespace std int x 61 5 struct s public s
  • 自己搭深度学习环境踩坑血泪史

    自己搭深度学习环境踩坑的血泪史 从一个沮丧的事情开始问题1 强行更新了一次win10后 双系统里的ubuntu的启动项就没了 xff0c 直接进入win10系统问题2 sudo apt get update 总是超时问题3 conda in