配置虚拟环境
配置虚拟环境时使用的环境是:ubuntu16.04,Python3.6.5
1.安装virtualenv和virtualenvwrapper
pip3 install virtualenv
pip3 install virtualenvwrapper
两个顺序不能颠倒,virtualenvwrapper 是virtualenv的扩展管理包,可以将所有的虚拟环境整合在一个目录下。
2.配置虚拟环境
安装完成后在 ~/.bashrc 中写入一些内容
vi ~/.bashrc
在最后写入以下内容:
export WORKON_HOME=~/Envs # virtualenvwrapper存放虚拟环境的目录,可自己设定
source /usr/local/bin/virtualenvwrapper.sh # virtualenvwrapper安装的路径
以上virtualenvwrapper安装的路径不唯一,一般是上边的路径。可能还会是其他的路径(我装的时候这个路径就没有),可以使用whereis命令查看路径,以下是两个参考路径
/usr/local/bin/virtualenvwrapper.sh
~/.local/bin/virtualenvwrapper.sh
在 .bashrc 中加入成功之后,运行以下命令,读入配置文件
source ~/.bashrc # 读入配置文件,立即生效
此处如果报错,请看文章最下方的报错解决。
3.创建虚拟环境
mkvirtualenv venv # venv为虚拟环境名
mkvirtualenv -p /usr/bin/python3.6 venv # 指定python版本,venv为虚拟环境名
基本命令:
workon # 查看当前的虚拟环境目录
workon 虚拟环境名 # 切换到虚拟环境
deactivate # 退出虚拟环境
rmvirtualenv venv # 删除虚拟环境venv
使用workon切换到虚拟环境后,就可以安装所需要的包库了,不使用了可以使用 rmvirtualenv 删除虚拟环境,这样就不至于把全局环境搞的乱七八糟。建议一个项目创建一个虚拟环境,这样可以很方便进行项目管理。
报错解决:
1. ERROR: virtualenvwrapper could not find virtualenv in your path
使用命令whereis找到virtualenv所在的目录,若找不到,以下是两个参考路径
/usr/local/bin
~/.local/bin
然后在 ~/.bashrc中添加一句 :PATH=$PATH: virtualenv所在路径,此时我的 .bashrc 文件是这样
PATH=$PATH:~/.local/bin
/usr/local/bin/virtualenvwrapper.sh
~/.local/bin/virtualenvwrapper.sh
再使用命令 source ~/.bashrc 命令,读入配置文件。
2. virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenvwrapper has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is set properly.
报以上的错误原因是:Ubuntu安装了2.7和3.x两个版本的python,在安装时使用的是sudo pip3 install virtualenvwrapper在我运行的时候默认使用的是python2.x,但在python2.x中不存在对应的模块。
找到virtualenvwrapper.sh文件,打开,找到这段话:
# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] then
VIRTUALENVWRAPPER_PYTHON="$(command \which python)"
fi
这段话表明当不存在VIRTUALENVWRAPPER_PYTHON环境时,会默认选择使用which python(我这里默认是python2)
所以在此将VIRTUALENVWRAPPER_PYTHON="$(command \which python)"改为:
VIRTUALENVWRAPPER_PYTHON="$(command \which python3)" ,此时文件改为这样:
# Locate the global Python where virtualenvwrapper is installed.
if [ "$VIRTUALENVWRAPPER_PYTHON" = "" ] then
VIRTUALENVWRAPPER_PYTHON="$(command \which python3)"
fi
或者 VIRTUALENVWRAPPER_PYTHON= 可以直接写python3.6的路径。
(由于我在本机使用的是pip3安装的virtualenvwrapper,而python3命令对应的是python3.6解释器,所以这样改)
如果在安装配置的过程中遇到其他的问题,欢迎交流,一起解决。