🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
![](https://img.kancloud.cn/41/e0/41e066af9a6c25a24868d9667253ec98_1241x333.jpg) ### 为什么需要虚拟环境: 到目前位置,我们所有的第三方包安装都是直接通过pip install xx的方式进行安装的,这样安装会将那个包安装到你的系统级的Python环境中。但是这样有一个问题,就是如果你现在用Django 1.10.x写了个网站,然后你的领导跟你说,之前有一个旧项目是用Django 0.9开发的,让你来维护,但是Django 1.10不再兼容Django 0.9的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有Django 1.10和Django 0.9两套环境呢?这时候我们就可以通过虚拟环境来解决这个问题。 ## virtualenv ### 安装virtualenv ``` virtualenv是用来创建虚拟环境的软件工具,我们可以通过pip或者pip3来安装 pip install virtualenv pip3 install virtualenv ``` ### 创建虚拟环境 ``` virtualenv [虚拟环境的名字] 创建虚拟环境的时候指定Python解释器 virtualenv -p C:\Python36\python.exe [virutalenv name] ``` **进入虚拟环境** ``` 虚拟环境创建好了以后,那么可以进入到这个虚拟环境中,然后安装一些第三方包,进入虚拟环境在不同的操作系统中有不同的方式,一般分为两种, 第一种是Windows 第二种是*nix: windows进入虚拟环境:进入到虚拟环境的Scripts文件夹中,然后执行activate。 *nix进入虚拟环境: cd virtualenv/bin source activate 一旦你进入到了这个虚拟环境中,你安装包,卸载包都是在这个虚拟环境中,不会影响到外面的环境。 ``` **退出虚拟环境** ``` 退出虚拟环境很简单,通过一个命令就可以完成:deactivate。 ``` ## virtualenvwrapper virtualenvwrapper这个软件包可以让我们管理虚拟环境变得更加简单。不用再跑到某个目录下通过virtualenv来创建虚拟环境,并且激活的时候也要跑到具体的目录下去激活。 ### 安装virtualenvwrapper ``` Linux:pip install virtualenvwrapper 编辑家目录下面的.bashrc文件,添加下面两行。 export WORKON_HOME=$HOME/.virtualenvs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 source /usr/local/bin/virtualenvwrapper.sh 使用source .bashrc使其生效一下。 Windows:pip install virtualenvwrapper-win ``` **创建虚拟环境** ``` mkvirtualenv [virutalenv name] mkvirtualenv -p python3 [virutalenv name] # 指定Python版本 ``` **切换到某个虚拟环境:** ``` workon [virutalenv name] ``` **退出当前虚拟环境** ``` deactivate ``` **列出所有虚拟环境** ``` lsvirtualenv ``` **删除某个虚拟环境** ``` rmvirtualenv [virutalenv name] ``` **创建虚拟环境的时候指定Python版本** ``` mkvirtualenv --python==C:\Python36\python.exe [virutalenv name] ``` ### 修改mkvirtualenv的默认路径 默认安装到电脑中C盘的当前登录用户的Envs目录下 在我的电脑->右键->属性->高级系统设置->环境变量->系统变量中添加一个参数WORKON_HOME,将这个参数的值设置为你需要的路径。 ## pipenv Windows安装pipenv ``` pip install pipenv ``` Mac安装 ``` brew install pipenv ``` Linux安装 ``` pip install pipenv ``` ### pipfile和pipfile.lock Pipfile文件 ![](https://img.kancloud.cn/80/55/805592111229768c5ce119deccc978a7_721x331.png) ``` 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 ```