ubuntu/windows 配置Python虚拟环境变量

虚拟环境

在开发的时候,一般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包都会安装在这里

扫描二维码关注公众号,回复: 956556 查看本文章
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版本统一了,再回去最上面的步骤。


后话

虚拟环境真好用。新建好的虚拟环境不会迁移你之前安装的任何包,那么现在开始为所欲为吧

猜你喜欢

转载自blog.csdn.net/hiudawn/article/details/80230816