基于pyenv和virtualenv搭建python多版本虚拟环境

pyenv简介

由于Python的依赖是基于site的,这对于生产环境来说,是一种简单而正确的方式,然而,对于我们的开发环境,基于这样的管理方式,带来了可怕的第三方依赖管理的难题,virtualenv适时出现了,拯救了广大被依赖问题困扰的Python程序员。virtualenv无疑是成功的,它为每个项目创建一个虚拟环境,使得项目的依赖全部在一个虚拟且封闭的环境中,互不干扰。然而,这就够了吗?想象下面一种场景:你的新项目在Python 3.3下面开发,而你维护的旧项目,却工作在Python 2.7之上,为了完成工作,你不得不安装两个Python解释器,并为每个解释器配置virtualenv,在你调试执行的时候,不得不适用冗长的全路径调用解释器,或者不断地修改你的环境变量。天哪,你再次陷入与你的工作无关的,烦人的事情中。pyenv的出现,就是来拯救你的。pyenv是一个Python多版本管理工具,他设计精巧,通过巧妙的方法,可以使多版本的Python共存在一个操作系统能,简单地实现切换从而使用不同版本的Python。pyenv支持插件,通过插件,可以和virtualenv完美结合,实现多版本,多环境的控制,使得你的每个项目,仿佛运行在一个完全隔离的环境中一样。

安装pyenv

使用pyenv-installer安装pyenv很简单,只需要在终端执行:

javascript 复制代码
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

打开~/.bashrc,输入一下语句添加环境变量配置

javascript 复制代码
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

使配置生效

javascript 复制代码
source ~/.bashrc
exec $SHELL -l

查看pyenv安装的python版本

javascript 复制代码
pyenv versions

安装相关依赖包

javascript 复制代码
yum install readline readline-devel readline-static -y
yum install openssl openssl-devel openssl-static -y
yum install sqlite-devel -y
yum install bzip2-devel bzip2-libs -y

安装多版本python

以安装python3.4.5为例

javascript 复制代码
pyenv install 3.4.5

系统会从python官网下载安装对应的python版本

但是因为众所周知的原因,直接从python官网下载源会比较慢,这里有两种解决方法:

1、从官网下载对应的版本压缩包到,以FTP方式上传到~/.pyenv/cache/目录,没有cache目录就自行创建。以安装python3.4.5为例,从官网下载Python-3.4.5.tgz文件后使用FileZilla客户端上传后,修改文件名称为Python-3.4.5.tar.gz。注意,这一步非常重要。然后按上步骤安装。

javascript 复制代码
mv Python-3.4.5.tgz Python-3.4.5.tar.gz
pyenv install 3.4.5 -v

2、使用国内镜像的pyenv源安装,比如github上有老司机在七牛上搭建的:http://pyenv.qiniudn.com/pythons/,执行以下命令:

javascript 复制代码
export PYTHON_BUILD_MIRROR_URL="http://yoursite.example.com/pythons"
pyenv install 3.4.5

pyenv与virtualenv

pyenv通过插件,可以很好的和virtualenv一起工作,通过整合virtualenv,pyenv实现了真正意义上的环境隔离,每个项目都相当于使用一个单独的解释器。通过pyenv-installer安装的pyenv,已经安装好virtualenv插件了。相关命令如下:

javascript 复制代码
pyenv virtualenv [-f|--force] [-u|--upgrade] [VIRTUALENV_OPTIONS] <version> <virtualenv-name>

选项-f表示强制的,也就是如果已经存在这个虚拟环境,那么将会覆盖这个虚拟环境 选项-u表示upgrade,用于修改已经存在的虚拟环境的Python版本 VIRTUALENV_OPTIONS 是传递给virtualenv的选项,可以通过virtualenv的帮助获取选项的含义 version 表示Python版本 virtualenv-name 是我们给虚拟环境指定的名字 例如:

javascript 复制代码
pyenv virtualenv 3.4.5 my_project  #创建一个Python版本为3.4.5的环境,环境叫做my_project

pyenv activate my_project  #激活my_project这个环境,此时Python版本自动变为3.4.5,且是独立环境

pyenv deactivate  #离开已经激活的环境

最后

分享一份Python的学习资料,但由于篇幅有限,完整文档可以扫码免费领取!!!

1)Python所有方向的学习路线(新版)

总结的Python爬虫和数据分析等各个方向应该学习的技术栈。

比如说爬虫这一块,很多人以为学了xpath和PyQuery等几个解析库之后就精通的python爬虫,其实路还有很长,比如说移动端爬虫和JS逆向等等。

(2)Python学习视频

包含了Python入门、爬虫、数据分析和web开发的学习视频,总共100多个,虽然达不到大佬的程度,但是精通python是没有问题的,学完这些之后,你可以按照我上面的学习路线去网上找其他的知识资源进行进阶。

(3)100多个练手项目

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了,只是里面的项目比较多,水平也是参差不齐,大家可以挑自己能做的项目去练练。

相关推荐
零澪灵2 分钟前
ChartLlama: A Multimodal LLM for Chart Understanding and Generation论文阅读
论文阅读·python·自然语言处理·数据分析·nlp
姝孟10 分钟前
C++——类和对象
开发语言·c++
小白学大数据10 分钟前
Snapchat API 访问:Objective-C 实现示例
开发语言·macos·objective-c
gopher951111 分钟前
go语言基础入门(一)
开发语言·golang
masa01017 分钟前
JavaScript--JavaScript基础
开发语言·javascript
程序员小王꧔ꦿ19 分钟前
python植物大战僵尸项目源码【免费】
python·游戏
拓端研究室TRL20 分钟前
Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码...
开发语言·python·重构
一只特立独行的猪6111 小时前
Java面试——集合篇
java·开发语言·面试
吃面不喝汤661 小时前
Flask + Swagger 完整指南:从安装到配置和注释
后端·python·flask
大得3692 小时前
go注册中心Eureka,注册到线上和线下,都可以访问
开发语言·eureka·golang