虚拟环境
在开发的时候,一般sudo pip install包名称
,就会把这个包安装到了python的某个脚本目录下。
但如果在一台机器上,想开发多个不同的项目,需要用到同一个包的不同版本,如果仍然使用上面那个命令,对python那个全局的包进行更新,则其他项目就可能无法正常进行了。
这时候,虚拟环境就派上用场了。虚拟环境可以搭建独立的运行环境,使得各个项目之间互不影响。在Linux下,虚拟环境隐藏于用户/home
目录下的.virtualenvs
。windows下默认在c盘env
目录。你所有pip的包都会被放到你指定的环境中,这时候你随便更新某个特定项目的包,都不会影响其他的。
接下来分别介绍Linux下(以Ubuntu为例,不同发行版差异非常微弱)和windows下的安装方式
Linux安装venv
首先安装虚拟环境主要的包
sudo pip install virtualenv
这时候已经可以用virtualenv your_env_name
来创建虚拟环境了,但为了管理方便,我们安装一个更好用的封装包
运行如下命令
sudo pip install virtualenvwrapper
这时候会发现还不能使用虚拟环境,如果是ubuntu
(红帽子系的配置文件可能不是下面这个,请自查)
vi ~/.bashrc
添加如下两行
export WORKON_HOME=$HOME/.virtualenv
source /usr/local/bin/virtualenvwrapper.sh
这里的意思就是配置虚拟环境放在你家目录的.virtualenv
中
然后创建你的第一个虚拟环境
mkvirtualenv my_env
注:这个mkvirtualenv
是因为上面的第二个pip安装的包,不然创建虚拟环境的方式是第一个pip包使用virtualenv
效果图如下:
shell
命令行最前面多了一个小括号,这个小马甲显示你当前正在用的虚拟环境。
这时候你可以执行下面命令去观摩一下,会发现有一个my_env
的文件夹,这就是只要在命令行带(my_env)
下执行pip
包都会安装在这里
cd ~/.virtualenvs
懒得cd
用,lsvirtualenv
命令也能查看所有的虚拟环境
第一次mkvirtualenv
会直接给你进去到虚拟环境中,想要退出虚拟环境,执行以下命令
deactivate
退出之后想再启用环境
workon my_env
使用下面命令可以查看你当前在使用哪个版本的python
which python
虚拟环境中:
虚拟环境外:
显然不是同一个,不信你pip list
看看
空空如也,除了初始化自动安装的包,你之前装的包都不在
使用python2或者python3创建虚拟环境,so easy
用python2就:
mkvirtualenv -p python2 your_env_name
用python3就:
mkvirtualenv -p python3 your_env_name
如果你想用更精确的版本,也是一个道理
mkvirtualenv -p /usr/bin/python3.5 your_env_name
删除虚拟环境,记得要先退出正在使用的环境再删除
rmvirtualenv my_env
windows安装虚拟环境
大同小异,主要差别体现在封装包的名字和配置环境变量
,就是那个经常有人叫你配置的Path,不是这里那个虚拟环境
不再赘述,有不懂的回去看ubuntu
中的描述
用管理员
打开cmd
安装虚拟环境
pip install virtualenv
安装好用的封装工具
pip install virtualenvwrapper-win
默认的虚拟环境会放在C:\Users\username\envs
,这个是可以更改的。需要在系统中配置WORKON_HOME
变量指定存放目录。(计算机->属性->高级系统设置->环境变量)
F:\hiudawn\python
是我自己的目录,点那个新建,目录你自己指定,像下面这样就行了
创建虚拟环境
mkvirtualenv my_env
安装好后默认会启用虚拟环境,这时候你pip安装任何东西都是安装在这个虚拟环境中,不会安装到你之前安装python的目录。
注意看有没有最前面那个小括号完全是不一样的pip
查看所有的虚拟环境
lsvirtualenv
启用某个环境
workon your_env_name
退出当前虚拟环境
deactivate
删除
rmvitualenv your_env_name
可能报错
source .bashrc
sudo pip -V 看看是什么版本的python
cd /usr/bin 进入到这里
./python -V 看看两个的python版本是否匹配
如果两者不一样,肯定是你之前安装多个python冲突了,这也就是利用虚拟环境可以避免的问题,但在安装虚拟环境之前它不给你用,坑!
如果上面版本不一样,建议是通过pip list
,看看是哪个版本安装了带有virtualenv***
前缀的包,一共是三个,全都sudo pip uninstall virtualenv***
了,然后用软链接或者硬链接ln python2 python
这样把pip和python版本统一了,再回去最上面的步骤。
后话
虚拟环境真好用。新建好的虚拟环境不会迁移你之前安装的任何包,那么现在开始为所欲为吧