为什么需要虚拟环境
到目前位置,我们所有的第三方包安装都是直接通过pip install xx的方式进行安装的,这样安装会将那个包安装到你的系统级的Python环境中。但是这样有一个问题,就是如果你现在用Django 1.10.x写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 0.9开发的,让你来维护,但是Django 1.10不再兼容Django 0.9的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有Django 1.10和Django 0.9两套环境呢?这时候我们就可以通过虚拟环境来解决这个问题。
pipenv
Windows安装pipenv
pip install pipenv
Mac安装
brew install pipenv
Linux安装
pip install pipenv
配置系统环境
首先我们右键电脑,打开属性,高级系统设置,打开环境变量
在系统变量中添加一项WORKON_HOME
创建虚拟环境
通过cmd命令行进入到需要创建虚拟环境的文件夹中,通过下述命令创建虚拟环境
pipenv shell
pipfile和pipfile.lock
此时在该文件夹中会有一个Pipflie的文件生成
url # 指定国内pip源,不然下载库会很慢
dev-packages # 开发环境
packages # 生产环境
django = "*" # *表示最新版本
requires # Python版本
pipfile.lock,详细记录环境依赖,并且利用了Hash算法保证了它完整对应关系
如果需要指定Python版本的话,前提是电脑中已经安装了python2和Python3
pipenv --three # 泛指Python3的版本
pipenv --two # 泛指Python2的版本
pipenv --python 3.7 # 指定Python版本
进入/退出/删除虚拟环境
pipenv shell # 进入虚拟环境
exit # 退出虚拟环境
pipenv --rm # 删除整个环境 不会删除pipfile
注:不要通过删除文件夹的形式删除虚拟环境
管理开发环境
安装在开发环境下
pipenv install --dev itchat
在虚拟环境中运行命令,使用run参数
pipenv run python manage.py runserver
pipenv有个缺点,lock不稳定而且时间非常长,所以安装包的时候记得加上–skip-lock,最后开发完成要提价到仓库的时候在pipenv lock
pipenv install django --skip-lock