【环境配置-1】-anaconda环境配置

由于换了电脑,因此原本很多配置过的内容又得重新操作一遍。不过这会也借机会熟悉一下conda虚拟环境配置的一些操作。
所谓虚拟环境,就是准备Python程序所需要很多依赖库,并对这些库做隔离操作,以方便后期的版本管理、打包克隆等等操作。

特别注意:随着时间推移,我们时常会忘记当初安装某个环境的步骤,以及其中的依赖库、具体版本,发生的bug都有什么。因此,对于个人项目的维护来说,务必做好严格的环境配置记录。
事实上,当我们运行Python项目,并发生很多报错的时候,归根到底是环境管理做的不好——理论上一个新的项目就需要新建一个环境,避免环境冲突。而很多时候我们到网上去搜寻解决方案,很多方案也是东拼西凑,没有触及本质问题。因此,如果做好环境管理,更好的话理解环境管理原理,那么就可以避免这些麻烦。

对环境的管理

#在不影响当前版本的情况下,新建环境并安装不同版本的python
#新建一个Python版本为3.6 名称为 py36 的环境
conda create -n py36 python=3.6 anaconda
# 或者是
conda create -n py36 python=3.6
#注:将py36替换为您要创建的环境的名称。 anaconda是元数据包,带这个会把base的基础包一起安装,不带的话新环境只包含python3.6相关的包。
# 相当于是又装了一边anaconda 。python = 3.6是您要在此新环境中安装的软件包和版本。 这可以是任何包,例如numpy = 1.7,或多个包。

# 将python更新到另外一个版本/安装指定版本的python
conda install python=3.6

我们可以使用以下方法,激活环境:

#然后激活想要使用的环境即可
conda activate py36
#更新Python
# 普通的更新python
conda update python

conda删除虚拟环境。
假设你的环境名字叫: octopus

conda remove -n octopus --all

conda查看环境名

conda info --envs

对自己的更新

# conda
conda update conda
# anaconda(升级anaconda前需要先升级conda)
conda update anaconda
# anaconda-navigator
conda update anaconda-navigator
# spyder
conda update spyder
# 所有包
conda update --all
# 尽量避免使用conda update --all命令,可能会出现部分包降级的问题

下载源管理

就是管理下载的默认路径,注意一下conda和pip是两个不同的工具,他们也自然是从不同的地方下载内容,同时如果我们换用不同工具下载,可能导致同一个包的不同版本被我们下载了两遍。如这里管理的是conda的下载源。

# 查看当前下载源
conda config --show-sources
# 添加下载源

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

# 添加下载源后,设置搜索时显示通道地址
conda config --set show_channel_urls yes
# 删除下载源
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

事实上,我们也可以直接从网页上下载包,然后本地暴力安装。
此外,如果国内的源在更新,继而挂掉了的话,我们也可以恢复原本的下载源。

conda config --remove-key channels

包管理

特别的,我们新建conda虚拟环境的时候一定会把python的下载下来。

查看已经安装的包

据我观察,虚拟环境虽然实现了我们在环境下的包隔离。但是在不同的环境下,如果conda发现安装包已经下载,那么实际上就会直接利用这个包进行安装,而不会再下载,实现重复利用。

conda list
conda list [包名称]

使用pip 则是:

pip list

指定版本下载

这里就说说,依据制定的requirements.txt文件进行下载,其内容格式为:

  • “包名==版本”
pip install -r requirements.txt
conda install --yes --file requirements.txt

注意,这里有个坑就在于,似乎高版本的pip下载包,如果使用VPN,则会报错;但是不用VPN又会非常慢,因此如果慢的话建议还是换源。

例如,深度学习项目需要做版本对应,python,pytorch,torchvision和torchtext,以及如果是有GPU的,需要将nvidia显卡、nvidia-driver、cuda和cudnn几个工具对应起来。
这里提供一些包的对应:

  • pytorch和torchvision的对应:https://github.com/pytorch/vision
  • pytorch和torchtext的对应:https://github.com/pytorch/text/

注意,其实pytorch和numpy也是有对应关系的,事实上pytorch和相关的依赖包的版本,即不能太高也不能太低,否则有些因为版本的更新,会把一些函数去掉,然后就会保存了。

关于GPU加速的问题

看到很多博客说,需要根据自己的显卡driver版本,先下载合适版本的cuda和cudnn;

但实际上我发现似乎并不需要,我们只需要下载合适的GPU版本的pytorch就行,其内置有对应的cudatoolkit工具。

因为我的新主机上似乎并没有安装cuda,而且nvcc等等的工具并不存在,也并不是没有加入环境变量之类的,确实没有工具包的文件夹存在。在相关设备管理的部分也看不到cuda的版本信息,但是确实可以使用GPU加速,例如在Minist数据集上训练VAE,用CPU可能需要半个小时,而用GPU加速后不到1分钟就训练完毕了。

本地下载

有些时候一些非常古老的包可能都不在默认的源里,不得不使得我们进行本地下载。注意,一定要注意虚拟环境是谁,别装错了。
例如,我们直接到清华源去下载pytorch和它的一些工具,网址如下:

  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
    如果我们是在windows下使用,那么一般就是win64了:
  • https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64

这里值得提醒的是,下载的内容有的是bz2,有的是whl,有的是.conda文件。似乎pip和conda均可以操作.bz2文件,pip还可操作whl文件,conda操作.conda文件,不过whl其实也是个压缩包,不知.conda是不是。以下举例就是操作.bz2文件的方法。

  • 使用pip安装,直接切换到相应的位置,进行pip install
pip install [路径名\包名称]
  • 使用conda安装,需要添加offline参数,例如:
conda install --offline pytorch-0.1.12-py35_0.1.12cu80.tar.bz2 #离线安装

包冲突

特别注意一个问题,是近期在使用tensorboard时发生的。在Pytorch中也可以使用tensorboard,例如下所示:

import numpy as np
from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter(comment='test_tensorboard') # 用于记录要可视化的数据

for x in range(100):

    writer.add_scalar('y=2x', x * 2, x) # 'y=2x'是标量的名称, x*2是曲线的y轴,x是曲线的x轴
    writer.add_scalar('y=pow(2, x)',  2 ** x, x)
    
    writer.add_scalars('data/scalar_group', {"xsinx": x * np.sin(x),
                                             "xcosx": x * np.cos(x),
                                             "arctanx": np.arctan(x)}, x)
writer.close()

在包引入的过程中,发生如下的报错:
在这里插入图片描述
那么我就在当前的base的conda环境下查看包的版本:
在这里插入图片描述
那么其实版本完全是够的,那么为什么会报这个错呢?查询了相关解决方案,一看要有各种补充的包的安装,觉得不靠谱。那么我想就卸了,再直接安装1.15版本的包吧。
在这里插入图片描述
结果还是报错,我就纳闷了,此时我就怀疑是不是安装的包,并没有做到很好的贯通协调?
结果还真的是,在vscode的命令行的终端里,发现包是1.14的,很奇怪,版本不同的包是如何这样悄无声息的共存的
在这里插入图片描述
但是既然知到了问题,那么就把这个包卸了,再安装指定版本的包就行。其实这里还有几个小插曲:
在这里插入图片描述
这里的报错貌似很奇怪,但是我们仔细看了一下,涉及到GPU相关的内容;但是我的笔记本上是CPU的模型,因此不太行…
因此在安装tensorflow的时候,需要特别声明是CPU版本。

pip install tensorflow-cpu==2.1

在安装tensorflow的时候,把tensorboard也会顺便装上;结果依然出现问题,启动tensorboard服务后,打开浏览器发现一片空白。心里纳闷,后来又想到可能是tensorboard版本太高(2.1),然而我python版本才3.7.7,pytorch是1.7.1,因此有可能出问题,故选择降级。

pip install tensorflow-cpu==1.15

终于解决问题,做了简单测试,结果如下:
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值