基于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多个练手项目

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

相关推荐
Stanford_11062 分钟前
用c++做游戏开发至少要掌握哪些知识?
开发语言·c++·微信小程序·c·微信公众平台·twitter·微信开放平台
007php0077 分钟前
家庭智慧工程师:如何通过科技提升家居生活质量
数据库·python·云原生·架构·golang·php·postman
SZ17011023126 分钟前
实时检测跟踪模块
python
鲨鱼吃橘子1 小时前
【C++融会贯通】哈希表的使用
c语言·开发语言·数据结构·c++·链表·哈希算法·散列表
时差9531 小时前
使用flink编写WordCount
java·大数据·开发语言·flink
搬砖的小码农_Sky1 小时前
C语言:共用体
c语言·开发语言·数据结构
Jason-河山1 小时前
利用Java爬虫获取商品评论:技术与实践
java·爬虫·python
500了2 小时前
Android和Java的发布/订阅事件总线EventBus
android·java·开发语言
胖哥真不错2 小时前
Python实现随机分布式延迟PSO优化算法(RODDPSO)优化CNN回归模型项目实战
python·项目实战·cnn回归模型·roddpso·随机分布式延迟pso优化算法
开心工作室_kaic2 小时前
ssm150旅游网站的设计与实现+jsp(论文+源码)_kaic
java·开发语言·旅游