Python创建虚拟环境
1、什么是虚拟环境
虚拟环境的意义,就如同 虚拟机 一样,它可以实现不同环境中Python依赖包相互独立,互不干扰。
example:
假设我们服务器中有两个项目,都是用到了一个第三方包,但是因为项目原因导致使用的这个第三方包的版本不一致。
这个时候就需要想办法把两个项目隔离开,处在不同的python环境中。
为了方便大家对虚拟环境有个认识,我列举了下其优点:
- 使不同应用开发环境独立
- 环境升级不影响其他应用,也不会影响全局的python环境
- 可以防止系统中出现包管理混乱和版本的冲突
市场上管理 Python 版本和环境的工具有很多,这里列举几个:
p
:非常简单的交互式 python 版本管理工具。pyenv
:简单的 Python 版本管理工具。Vex
:可以在虚拟环境中执行命令。virtualenv
:创建独立 Python 环境的工具。virtualenvwrapper
:virtualenv 的一组扩展。
工具很多,但个人认为最好用的,当属 virtualenvwrapper
,推荐大家也使用。
2、virtualenv
由于 virtualenvwrapper 是 virtualenv 的一组扩展,所以如果要使用 virtualenvwrapper,就必须先安装 virtualenv。
安装 virtualenv pip install virtuanelv
基本使用
virtualenv 创建虚拟环境是在当前目录下创建的。
所以为了便于管理,可以手动创建一个目录集中存放,统一在这个里创建虚拟环境,这样所有的虚拟环境都会在这个目录下
创建
# 准备目录并进入 $ mkdir -p /home/wangbm/Envs $ cd !$ # 创建虚拟环境(按默认的Python版本) # 执行完,当前目录下会有一个my_env01的目录 $ virtualenv my_env01 # 你也可以指定版本 $ virtualenv -p /usr/bin/python2.7 my_env01 $ virtualenv -p /usr/bin/python3.6 my_env02 # 你肯定觉得每次都要指定版本,相当麻烦吧? # 在Linux下,你可以把这个选项写进入环境变量中 $ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc
进入/退出
$ cd /home/wangbm/Envs # 进入 $ source my_env01/bin/activate # 退出 $ deactivate
删除 删除虚拟环境,只需删除对应的文件夹就行了。并不会影响全局的Python和其他环境。
$ cd /home/wangbm/Envs $ rm -rf my_env01
注意: 创建的虚拟环境,不会包含原生全局环境的第三方包,其会保证新建虚拟环境的干净。
如果你需要和全局环境使用相同的第三方包。可以使用如下方法:
# 导出依赖包 $ pip freeze > requirements.txt # 安装依赖包 $ pip install -r requirements.txt
3、virtualenvwrapper
virtualenv 虽然已经相当好用了,可是功能还是不够完善。
你可能也发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。
还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。
为了解决这两个问题,virtualenvwrapper就诞生了。
安装
# 安装 - Linux pip install virtualenvwrapper # 安装 - Windows pip install virtualenvwrapper-win
配置
先find一下virtualenvwrapper.sh
文件的位置
find / -name virtualenvwrapper.sh # /usr/bin/virtualenvwrapper.sh
在~/.bashrc 文件新增配置
export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/workspace export VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.sh
配置生效
source /usr/bin/virtualenvwrapper.sh
基本语法:
mkvirtualenv [-a project_path] [-i package] [-r requirements_file] [virtualenv options] ENVNAME
常用方法
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 创建 $ mkvirtualenv my_env01 # 创建指定版本 $ mkvirtualenv -p python3 my_env011 # 进入 $ workon my_env01 # 退出 $ deactivate # 列出所有的虚拟环境,两种方法 $ workon $ lsvirtualenv # 在虚拟环境内直接切换到其他环境 $ workon my_env02 # 删除虚拟环境 $ rmvirtualenv my_env01
其他命令
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 列出帮助文档 $ virtualenvwrapper # 拷贝虚拟环境 $ cpvirtualenv ENVNAME [TARGETENVNAME] # 在所有的虚拟环境上执行命令 $ allvirtualenv pip install -U pip # 删除当前环境的所有第三方包 $ wipeenv # 进入到当前虚拟环境的目录 $ cdsitepackages # 进入到当前虚拟环境的site-packages目录 $ cdvirtualenv # 显示 site-packages 目录中的内容 $ lssitepackages
本文来自博客园,作者:暮歌行,转载请注明原文链接:https://www.cnblogs.com/xuejian123/p/17201339.html