使用virtualenv或virtualenvwrapper创建Python虚拟环境
一、 virtualenv
virtualenv 是目前最流行的 python 虚拟环境配置工具。它不仅同时支持 python2 和 python3,而且可以为每个虚拟环境指定 python 解释器,并可以选择继承基础版本的包。
virtualenv 可以说是 venv 的增强版本,不过早在 venv 出现之前,virtualenv 就算是最受欢迎的命令行环境管理工具了。venv 的许多特性也是借鉴的 virtualenv,相比于 venv,其强大之处主要在:
- 更快
- 扩展性更强
- 自动发现并可创建多版本的 Python 环境
- 可通过 pip 更新
- 丰富的编程接口
1、安装virtualenv
使用自己对应安装的pip版本
1 |
|
2、常见虚拟环境管理操作
创建虚拟环境目录
1 |
|
它会在当前路径下,创建myenv5的目录,虚拟环境的所有命令和包都在这个目录下。
bin:存放一些python、pip命令的目录
virtualenv的软件包管理目录site-package在lib/python3.6/site-packages/下。
激活虚拟环境
1 |
|
退出虚拟环境:
1 |
|
删除虚拟环境,只需要将这个虚拟环境目录删除即可。
1 |
|
指定python解释器:
创建的虚拟环境的python解释器,默认使用virtualenv里的版本。
如果你是把virtualenv安装在python2里,那默认的就是python2,安装在python3里,默认的就是python3。当然,你也可以自己指定使用哪个解释器版本,比如:
1 |
|
继承基础环境的包
virtualenv从版本20开始,默认就是’–no-site-packages‘了,默认就是不继承父环境的包。创建的虚拟环境是一个不带任何第三方包的“干净”的Python运行环境。
如果有教程告诉你,“–no-site-packages选择不继承父环境的包”,这个命令已经废弃了。
那么,如果你现在想要继承父环境的包,怎么办?使用–system-site-packages
先在父环境,pip安装一个包jieba
1 |
|
创建一个可以访问基础环境包的虚拟环境:
1 |
|
进入虚拟目录,查看python版本:
1 |
|
我们使用python看能否导入父环境的包:
1 |
|
xxxxxxxxxx sudo systemctl start docker sudo systemctl status docker docker –version# 注意:# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。# vim /etc/yum.repos.d/docker-ce.repo# 将[docker-ce-test]下方的enabled=0修改为enabled=1## 安装指定版本的Docker-CE:# Step 1: 查找Docker-CE的版本:# yum list docker-ce.x86_64 –showduplicates | sort -r# Loading mirror speeds from cached hostfile# Loaded plugins: branch, fastestmirror, langpacks# docker-ce.x86_64 17.03.1.ce-1.el7.centos docker-ce-stable# docker-ce.x86_64 17.03.1.ce-1.el7.centos @docker-ce-stable# docker-ce.x86_64 17.03.0.ce-1.el7.centos docker-ce-stable# Available Packages# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)# sudo yum -y install docker-ce-[VERSION]bash
其他详细介绍,请参考 virtutalenv 官网:https://virtualenv.pypa.io/en/latest/reference/
3、优缺点:
1、跟venv基本一致,功能过于简单,就只是创建个虚拟隔离环境,没有多余功能。
2、相比venv,它支持在2.x、3.x以及windows,
3、相比venv,可以指定python版本与选择是否继承父环境的包。(venv也可以指定版本)
4、这里virtualenv 有些不便,因为virtual的启动、停止脚本都在特定文件夹,可能一段时间后,你可能会有很多个虚拟环境散落在系统各处,你可能忘记它们的名字或者位置。
这一点远没有pyenv好。
二、virtualenvwrapper
鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虚拟环境工作变得便利。它把你所有的虚拟环境都放在一个地方。
官网参考:https://virtualenvwrapper.readthedocs.io/
1、安装virtualenvwrapper(确保virtualenv已安装)
1 |
|
virtualenvwrapper默认将所有的虚拟环境放在~/.virtualenvs目录下管理,可以修改环境变量WORKON_HOME来指定虚拟环境 的保存目录。
1 |
|
source加载使生效
1 |
|
虽然已经pip安装了,但是此时,你依然无法使用virtualenvwrapper
上面的virtualenvwrapper被安装到了你使用pip3的python环境下,如下:
1 |
|
激活virtualenvwrapper
1 |
|
可以将这个命令也一起放到环境变量中,.bashrc
1 |
|
注意:如果你安装的virtualenv不在系统默认的python解释器上,就需要单独指定virtualenvwrapper使用的python路径:VIRTUALENVWRAPPER_PYTHON,否则激活的时候,会报错,如下:
No module named virtualenvwrapper
报错,因为它默认使用系统的python路径了。
添加VIRTUALENVWRAPPER_PYTHON变量即可。
1 |
|
2、virtualenvwrapper使用
创建虚拟环境 mkvirtualenv
1 |
|
虚拟环境目录不会放到当前目录下了,它默认装在了/root/.virtualenvs,所有的虚拟环境都会放到这个目录下
1 |
|
如果想要指定python版本,可以使用–python命令
1 |
|
查看当前的虚拟环境目录
1 |
|
切换虚拟环境
1 |
|
退出虚拟环境
1 |
|
删除虚拟环境
1 |
|
virtualenvwrapper 提供环境名字的tab补全功能。当您有很多环境, 并且很难记住它们的名字时,这就显得很有用。
workon 也能停止您当前所在的环境,所以您可以在环境之间快速的切换。
其它命令参考:https://virtualenvwrapper.readthedocs.io/en/latest/
3、优缺点分析:
1、它就是基于virtualenv的封装,将所有虚拟环境整合在一个目录下,默认(~/.virtualenvs)
2、提供了很多api,可以管理(新增,删除,复制,切换)虚拟环境
3、支持tab补全,切换环境很方便。
参考:
https://zhuanlan.zhihu.com/p/106588887