虚拟环境工具对比
目前接触的开发环境相关:
- 系统开发环境:Windows、 linux(Ubuntu16.04 lts)、 mac os等
- 虚拟机:vmware、docker
- Python环境:python2/3、以及各种框架、包、模块的版本的选择
为什么需要使用虚拟开发环境?
1、主要原因:
为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。
python2和3存在不小的差异,并且,由于各种原因导致了Python 2和Python 3的长期共存(Python虽然现在比较火,但是也经历了)。在实际工作过程中,我们可能会同时用到Python 2和Python 3,因此,也需要经常在Python 2和Python 3之间进行来回切换。这就需要对python的版本进行管理,除此之外还需要对不同的软件包进行管理。大部分情况下,对于开源的库我们使用最新版本即可。但是,有时候可能需要对相同的Python版本,在不同的项目中使用不同版本的软件包。
2、简而言之:
我们在做不同项目(比如后面用的django1.11.4和在最新的2点几)的时候需要不同的项目依赖。
虚拟环境工具
pyenv-virtualenv
pyenv和virtualenv。前者用于管理不同的Python版本,后者用于管理不同的工作环境。
pyenv是一个Python版本管理工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。
使用步骤
1、pyenv安装
安装与相对环境变量配置方式:curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash (主目录下会有个.pyenv的隐藏文件夹)
将以下三条语句写入 ~/.bashrc :
export PATH="/home/zhu/.pyenv/bin:(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
第二种是安装git之后,用git安装,不过配置环境变量时上面语句需要用echo 追加(>>)写入配置文件
配置立刻生效
source ~/.bashrc验证
echo $PATH (第一个路径结尾有个shims就可以了)更新
pyenv update (到这安装完成)
2、基本使用
使用pyenv安装Python
- 依赖安装(python安装前提):
sudo apt-get install libc6-dev gcc
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm - 安装:
慢方式:pyenv install 3.6.4 -v #-v 以日志模式显示安装过程(国外服务器下载)
快方式:下载至本地再安装
cd ~/.pyenv
sudo mkdir cache(临时文件夹,随便起个名都行)
wget -c http://mirrors.sohu.com/python/3.6.4/Python-3.6.4.tar.xz -P ~/.pyenv/cache/
pyenv install 3.6.4 -v - 查看支持Python版本 pyenv install --list
- 列出pyenv中所有可用的python版本 pyenv versions
- 指定python版本 pyenv global 3.5.4(版本相关依赖随之切换,避免了不同版本在系统中产生干扰)
- 删除指定版本 pyenv uninstall 3.5.4
注意:
- 使用pyenv管理python,必须是用pyenv安装的python才行,系统以前有的,需要重新用pyenv安装
- 使用pip安装第三方模块时会安装到~/.pyenv/versions/xxx下,不会和系统模块发生冲突;
- 使用pip安装模块后,可能需要执行pyenv rehash更新数据库。
- 配置环境变量(写入方式注意与下载方式结合,不然会出诡异的错误)
virtualenv本身是一个独立的工具,用户可以不使用pyenv单独使用virtualenv。但是,如果使用了pyenv,就需要安装pyenv-virtualenv插件而不是virtualenv软件来使用virtualenv的功能。(https://github.com/yyuu/pyenv-virtualenv)
- 安装virtualenv:pip install virtualenv 然后合适的位置建个项目目录如myproject
- 进入myproject ,创建项目的虚拟环境:pyenv virtualenv python版本号 虚拟环境名 (python版本必须是安装过的,环境名随便起,只要能记住python版本就好)
- 进入环境:pyenv activate 环境名
- 退出环境:pyenv deactivate 环境名
virtualenv-virtualenvwrapper
1、安装
pip install virtualenv
pip install virtualenvwrapper
2、查看路径
type virtualenvwrapper.sh
3、配置
vi ~/.bashrc
# 文件最后添加:
export WORKON_HOME=~/.virtualenv
source /usr/local/bin/virtualenvwrapper.sh
(若在pip下载后,找不到/usr/local/bin/virtualenvwrapper.sh路径的文件,使用 find / -name virtualenvwrapper.sh 寻找该文件路径,原因可能是因为之前安装过pyenv-virtualenv)
4、创建对应目录
mkdir ~/.virtualenv
5、刷新环境
source ~/.bashrc
6、创建虚拟环境
mkvirtualenv axf -p /usr/bin/python3
7、简单使用
- 创建虚拟环境 mkvirtualenv [版本] vir_name
- 进入虚拟环境 workon vir_name
- 退出环境:deactivate
pipenv(号称最好用的python虚拟环境和包管理工具)
为什么说它最好?
我们常用virtualenv搭建虚拟环境,管理python版本,但是跨平台的使用不太一致,且有时候处理包之间的依赖总存在问题
github上星星数:
virtualenv 3K
pyenv 14.9K
pipenv 16.5K
pipenv主要有以下特性:
(1)pipenv集成了pip,virtualenv两者的功能,且完善了两者的一些缺陷。
(2)过去用virtualenv管理requirements.txt文件可能会有问题,Pipenv使用Pipfile和Pipfile.lock,后者存放将包的依赖关系,查看依赖关系是十分方便。
(3)各个地方使用了哈希校验,无论安装还是卸载包都十分安全,且会自动公开安全漏洞。。
(4)通过加载.env文件简化开发工作流程。
(5)支持Python2 和 Python3,在各个平台的命令都是一样的。
1、安装
pip/pip3 install pipenv
2、使用
在合适位置创建项目目录如:根目录下:mkdir project
进入 project:cd project
初始化虚拟环境: pipenv install
简单使用,举个栗子:
打开pycharm,打开project目录,新建个pachong.py,导入requests库,并不能用
回到终端,安装requests库 :pipenv install requests,这时pycharm中的requests库就能用了指明只安装在开发环境中(--dev) pipenv install --dev requests --three
指明前Pipfile显示
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
requests = "*"
[requires]
python_version = "3.5"
指明后Pipfile显示
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
requests = "*"
[packages]
requests = "*"
[requires]
python_version = "3.5"
pipenv可以像virtualenv一样用命令生成requirements.txt 依赖文件 (pipenv graph可以查看安装依赖)
pipenv lock -r --dev > requirements.txtvirtualenv中生成依赖文件 pip freeze > reqirement.txt
pip install -r reqirement.txt
项目地址:https://github.com/pypa/pipenv
文档地址:https://docs.pipenv.org/