1. 虚拟环境
虚拟环境(virtual environment),顾名思义是虚拟出来的环境,通俗来讲,可以借助虚拟机,docker来理解虚拟环境,就是把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”。在这个容器中,我们可以只安装自己所需的依赖包,而各个容器之间相互隔离,互不影响。
比如说,以个人为例,有时候接触到不同模型的代码用到相应的库的版本不同。如果使用同一环境,那么在跑不同模型的时候,就需要对相应的库进行更新卸载安装等操作,将会十分不便。而使用虚拟环境的话,就可以创建多个环境,在各自的环境中配置各自所需的库,这样在跑不同模型的时候只需要在自己的虚拟环境下进行即可,不会产生冲突。
2. Ubuntu下安装Python 3.6
ubuntu16.04默认安装的python版本为python2.7,python3.5。不清楚系统已经安装了哪些版本的python,可用如下操作参看:
cd /usr/local/lib
ls
如果没有自己想要用到的版本,可通过如下操作安装python:
# 通过http://www.python.org/ftp/python查找想要的python版本,此处以python3.6.10为例
wget http://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz
tar -xvzf Python-3.6.10.tgz
cd Python-3.6.10
./configure --with-ssl
make
sudo make install
安装完毕后,以后若想查看某个python的具体版本:
python3.6 -v #3.6可换成任意版本
3. 创建虚拟环境的准备条件
1)安装虚拟环境
pip install virtualenv
如果权限问题就在最前面加入sudo
可能会遇到 ERROR: No matching distribution found for virtualenvo 这个问题,解决方法:
pip install virtualenv -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
2)安装虚拟环境扩展包
pip install virtualenvwrapper
3)创建虚拟环境管理目录
mkdir ~/virtualenvs #放在根目录下面即可,virtualenvs可改名,但没必要,它只是用来存放虚拟环境的而已
4)编辑根目录下面的.bashrc文件
gedit .bashrc
#在末尾添加下面两行
export WORKON_HOME=$HOME./virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
#第一行virtualenvs与3)中名称相同,位置为刚才创建的位置
#第二行virtualenvwrapper.sh如果不确定其存在位置,可通过
which virtualenvwrapper.sh
确定,在source后填入对应的位置
5)使.bashrc生效,运行:
source .bashrc
4. 虚拟环境的创建和使用
1)创建虚拟环境
mkvirtualenv dev # dev为虚拟环境名称,会自动存在$HOME./virtualenvs目录下,此处用的python版本为系统默认版本
创建python3.6的虚拟环境
mkvirtualenv -p python3.6 dev # dev为虚拟环境名称
2)使用虚拟环境
workon dev # dev为上一步骤创建的虚拟环境名称
进入虚拟环境后,会在最前面显示(dev)说明正处于这个虚拟环境下,用pip安装的任何库都将存在这个环境中。另外,虚拟环境中安装包的时候不需要使用sudo,否则就把包装到了真实环境中了。
3)查看电脑上虚拟环境数量及名称
workon 空格 + 两次tab键
4)退出虚拟环境
deactivate
5)删除虚拟环境
rmvirtualenv dev # dev为之前创建的虚拟环境名称
5. 清华源
pip一般默认国外镜像,一般速度较慢。在此推荐清华大学的镜像
#临时使用
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
永久修改,清华源在2018年4月1号推出了一键tuna的服务,我们只需要下载相关的脚本即可。
wget https://tuna.moe/oh-my-tuna/oh-my-tuna.py
python oh-my-tuna.py
sudo python oh-my-tuna.py --global
在此,我们便搭建好了python虚拟环境,并利用清华源能够较快的安装满足需求的库,不再为各种版本问题而困扰了。