ubuntu下conda+pytorch+opencv环境配置 | 大专栏

在ubuntu系统上利用安装conda,pytorch,opencv,并结合rfb-net在voc2007和voc2012上完成测试。核心内容还是环境的配置,特别是解决环境配置中遇到的各种问题。

安装

python版本问题

目前的conda对应的python3版本是3.7,但是ubuntu16.04的系统自带版本是python3.5,而ubuntu18.04自带版本又是python3.6,而网上很多的安装教程又都是conda对应python3版本是python3.6的情况。也许曾经是,但是由于这个原因,在整个环境的安装过程,参照别教程安装的时候会出现很多问题,所以一一列举出来并解决。

更新: conda对应的python版本是根据不同conda版本是不同的,也许有的就是python3.6和系统版本一样

conda安装

conda介绍

conda本身可以看做是一个集成环境,自己集成了很多的第三方包,而且还都是主要用于机器学习和数据分析的包

其次conda还可以继续安装其他的第三方库,就到这里来看,conda和python很接近,只不过是比python集成的内容更多

但是conda和python不同的地方在于,conda是可以把python当做一个包来管理的,也就是conda下面可以安装不同版本的python,生产不同的虚拟环境,执行不同的操作。而且在安装conda的时候,一般它会自带一个版本的python,比如本次试验中的python3.7

快速安装

参见conda安装教程
如果原文下载链接无法打开,可以点此进入

问题分析

python版本问题

如果是python2,就不存在这个问题,但是如果是python3的conda就是前面提到的问题,再conda安装的时候,会自动安装一个python3.7并且设置成ubuntu系统版本,也就是ubuntu中再输入python3的时候会进入到python3.7而且后面还会跟有anaconda

这时候可以把这个python7当做conda的一个虚拟环境(即类似再python中建立的一个虚拟环境)。然后conda在这个虚拟环境中装了很多第三方包 这其实也就是我们为什么用从conda的原因,方便。装好一个conda,就什么都有了,而且安装其他pytorch,opencv什么的也很方便。

但是整个的这样的一些配置都可以把它当做一个虚拟环境看待,这样对后面解决问题很有帮助。而且装好的conda其实也就是主目录下的一个文档夹,所有的可执行文档,第三方库,都在里面,而没有说被安装到系统其他目录中。

conda命令无效

多半是路径的问题,前面也提到conda安装后,不会像是安装其他东西自动添加到系统其他目录中,在shell检索的时候可以检索到,所以我们需要把conda可执行问题的路径添加到系统路径

参加修改环境变量教程修改

如果不习惯vim,可以使用nano,使用感觉更偏向与平常的一些文本编辑器

总结

自此,conda的安装就算是基本完成了,如果还有什么问题,可以邮件留言

pytorch安装

快速安装

参加pytorch安装教程,可以完成安装

问题分析

  • 在教程中,其实已经把所有问题都分析完了,而且我们最终采用的也是这个解决方法,如果最开始就能看到这篇教程就不用走这么多弯路了!!!

  • 很多教程都说了修改conda的源可以解决condahttperror错误,但是实际上我们之前尝试过修改到了清华的,中科大的源,但是都是不行,用conda安装的时候还是会出现这个问题。猜测多半是系统代理的问题,但是还是没有

  • conda安装不一定就不行,所以还是可以先尝试一下,因为经过试验源码安装pytorch非常耗时间,也许是个人网络问题

pip安装

  • 后来经过尝试发现pip也不一定不可以安装,如果直接使用如下命令是不可以:

    1
    sudo pip3 install pytorch

    但是如果在pytorch官网之中直接选择pip安装选项,利用官网生产的pip安装选项是可以安装的:

    1
    sudo pip3 install torch torchvision

    只不过说这样安装的结果并不是在conda的整个环境之下,而是在本地的python 存放第三库的文档夹中,而前面说过,conda是自成一个环境的,所以目前这样安装的时候,如果进入的conda下的python,那么import torch的时候没有办法导入的,后面的opencv也是如此。

    解决办法就是将这个本地python下的第三方库的文档夹,加入到环境变量当中。是的,最开始的时候是没有加进去的,当然也不能排除某些情况就已经加入进去了,那么导入的时候应该是可以导入的。因为就算是conda下的python版本,其检索路径也会包括系统环境变量

opencv安装

概述

opencv的安装应该是一个踩坑最多的地方,以至于说连连一个还算看的过去的安装教程都没有,所以这里决定慢慢写一个

pip问题

利用 pip install opencv-python 安装的时候,最开始是遇到了如下问题:

1
2
3
4
5
6
7
8
retrying (retry(total=4, connect=none, read=none, redirect=none)) after connection broken by 'proxyerror('cannot connect to proxy.', newconnectionerror('<pip._vendor.requests.packages.urllib3.connection.verifiedhttpsconnection object at 0x00000000044cf7b8>: failed to establish a new connection: [errno 10061] ',))': /simple/requests/
  retrying (retry(total=3, connect=none, read=none, redirect=none)) after connection broken by 'proxyerror('cannot connect to proxy.', newconnectionerror('<pip._vendor.requests.packages.urllib3.connection.verifiedhttpsconnection object at 0x00000000044cf6a0>: failed to establish a new connection: [errno 10061] ',))': /simple/requests/
  retrying (retry(total=2, connect=none, read=none, redirect=none)) after connection broken by 'proxyerror('cannot connect to proxy.', newconnectionerror('<pip._vendor.requests.packages.urllib3.connection.verifiedhttpsconnection object at 0x00000000044cf5f8>: failed to establish a new connection: [errno 10061] ',))': /simple/requests/
  retrying (retry(total=1, connect=none, read=none, redirect=none)) after connection broken by 'proxyerror('cannot connect to proxy.', newconnectionerror('<pip._vendor.requests.packages.urllib3.connection.verifiedhttpsconnection object at 0x00000000044cf4a8>: failed to establish a new connection: [errno 10061] ',))': /simple/requests/
  retrying (retry(total=0, connect=none, read=none, redirect=none)) after connection broken by 'proxyerror('cannot connect to proxy.', newconnectionerror('<pip._vendor.requests.packages.urllib3.connection.verifiedhttpsconnection object at 0x00000000044cf358>: failed to establish a new connection: [errno 10061] ',))': /simple/requests/
  could not find a version that satisfies the requirement  (from versions: )
no matching distribution found for requests

细节上会有所不同,因为我是网上截取了request的安装报错,因为最开始报错的时候没有截图,不过基本就是这个问题。

可以明确的是,这个是系统代理的问题,因为绝大部分ubuntu用户都会必备一个SS。所以不用说去想着换pip源什么的解决这份问题,不过源还是要换的,毕竟国内源还是快。但是讲真最后解决的自己都记不太清楚了。但是基本思路如下:

首先,检查ubuntu的网络代理问题,也就是系统设置下的网络,把网络代理禁用掉

然后就是检查全局的代理设置,可以使用如下命令尝试:

1
pip install --proxy=user:pass@server:port <package name>

比如说大家的SS基本都是配置的127.0.0.1:1080,那么就是:

1
pip install --proxy=user:pass@127.0.0.1:1080 opencv-python

用户名和密码需要改成自己的。
有可能行,有可能还是不行,我最开始好像就是不行,,,
最后就是设置全局代理

1
2
set http_proxy=username:password@proxy:port
set https_proxy=username:password@proxy:port

proxy,就是代理服务器ip
如果还是不行,大家可以去这两个网页看看,我当时好像做到这,怎么的就好了。。。

参考资料:
https://github.com/skvark/opencv-python/issues/102
https://github.com/pypa/pip/issues/5362

apt-get 安装

因为之前那个问题,所以网上还有一部分教程是说,你可以用apt-get安装。而事实证明这样确实能够安装,但是尴尬的问题在于,这样安装完成之后,最后还是说import cv2的时候找不到cv2.

而且这个找不到是指就算是进入本地的python2,python3都找不到,跟后面的本地python能找到,但是conda下的python找不到是完全不同的,所这种方法基本是无效的

pip安装

如果有幸解决了最开始pip的问题,或者根本就没与遇到pip的问题,可以使用pip安装。

1
2
sudo pip3 install opencv-python
sudo pip install opencv-python

但是同样还是遇到几个棘手的问题。就算是你用pip,pip3分别安装了opencv-python,而且在彼此的环境中都成功导入了cv2,或者说在python3中是 python3.5(ubuntu16), python3.6(ubuntu18) 中成功导入,但是在python3.7中就是不行,所以在conda中也还是不行。原因是猜测,这两个安装方式安装的opencv包都放在了/user下了,但是python3.7是conda的python版本,是放在conda的文档下的,所以找不到。

而且也许你也在网上看到了说把python2.7下的cv2文档拷到conda的python目录下,但是却还是不行,因为那个移动的是python2下的cv2,但是你的版本是python3的,所以不行。

最佳的解决办法就是将python3下的cv2包直接复制到conda文档夹python的site-packages文档夹下。就好像是给python3.7装了这个第三方包一样。而不是只移动.so文档。前面说过的,python3.7就是conda下的一个虚拟环境,而安装第三方包只不过就是把连接文档下载下来放到python的检索目录下,所以可以直接这么做。

再或者就是如图刚刚解决torch的方法一般,添加环境变量,如果发现已经是环境变量了,那么就采取刚刚说到的复制文档夹的方式

然后也许还是会碰到一个,importerror: no module named cv2.cv2的问题,这个是因为没有cv2.so的问题,至于为什么python3中直接运行的时候没有,猜测是会自动过滤掉那个版本号。解决办法就是将python3.7目录下的cv2.x86_64-linux-gnu.so,改成cv2.so就可以。然后就算是解决了opencv的安装问题了。

(0)

相关推荐

  • 上班摸鱼程序,再也不怕领导偷偷出现在身后了

    来源:Python 技术「ID: pythonall」 当你在上班摸鱼的时候,领导总会偷偷摸摸的出现在你的背后,例如小编曾经偷偷摸摸看<轻音>被抓包了.今天我们就用 Python 来破解这 ...

  • pip.ini

    虽然售后小哥哥给我装了一些常用软件,但python相关的还是得自己装. python的安装很简单,没有任何问题,只改一下路径.勾选下path就可以,以前的文章中已经介绍过了,就不在这里重复了. 但是在 ...

  • OpenCV4.4加载C 版和pytorch版YOLOv3及YOLOv4实现自定义目标检测

    opencv在4.4版本添加了对yolov4的支持,网上也有相应的教程,但是目前中文网上的教程大都基于C++实现,或者是用cv2.dnn.readNetFromDarknet.这个比较low-leve ...

  • kornia-PyTorch的开源计算机视觉python库

    Kornia是一个微计算机视觉库PyTorch. 它由一组例程和可区分模块组成,用于解决通用计算机视觉问题.该软件包的核心是使用PyTorch作为其主要后端,以提高效率并利用反向模式自动微分来定义和计 ...

  • 错误集合

    pip install opencv-python出现下面错误: Fatal error in launcher: Unable to create process using '"d:\p ...

  • python+opencv读入和显示图片

    多久消失不见的本人,又回来啦!!! 这段时间换了老板,嘻嘻,也换了要学习的内容了,如此不专一,流汗中... 由于是本人兴趣爱好,更新时间不一定哦 疫情当前,请大家保重自己!!! ----------- ...

  • Maskrcnn

    折腾了两天总算跑通了demo,走了不少弯路.参考了很多文章,这里就不详细一一列出了,就总结一下. Github : https://github.com/facebookresearch/maskrc ...

  • 平安夜,Python送你一顶圣诞帽 @微信官方

    最后知道真相的我眼泪掉下来 (还蒙在鼓里的同学请在微信最上方的搜索栏自行搜索『圣诞帽』) 好吧,你不给,咱自己来,不就是个帽子嘛. Python 在手,圣诞帽我有! OpenCV 库加上几张圣诞帽图片 ...

  • Anaconda+Pycharm环境下的PyTorch配置方法

    文章目录 写给新手的话 `pycharm`是什么,为什么让我指定`interpreter` `pip`又是什么 `conda`,`vitualenv`,`pipenv` 又是什么 `anaconda` ...

  • 基于OpenCV的显著图绘制

    重磅干货,第一时间送达 01.安装OpenCV > pipinstall opencv-python> pip install opencv-contrib-python > pyt ...

  • 《python opencv实践》一、基于颜色的物体追踪(上)

    cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]

  • conda命令那点事

    清华 镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda con ...