008_使用pyenv进行py开发环境管理

一、

安装Python

绝大多数Python入门书籍,都会介绍如何安装Python,然而,本书要介绍一种全新的安装方式。使用pyenv来安装并管理我们的环境。

pyenv简介

由于Python的依赖是基于site的,这多与生产环境来说,是一种简单而正确的方式,然后,对于我们的开发环境,基于这样的管理方式,带来了可怕的第三方依赖管理的难题。想象一下,你在开发一个新项目的同时,还在维护一个就项目, 新项目依赖某个包的较新的版本,旧项目却依赖一个相对较旧的版本,而这两个版本是不兼容的,事实上,这种不兼容,在Python世界里是司空见惯的。

基于以上难题,virtualenv适时出现了,拯救了广大因依赖问题焦头烂额的Python程序员。virtualenv无疑是成功的,他为每个项目创建一个虚拟环境,使得项目的依赖全部在一个虚拟且封闭的环境中,互不干扰。然而,这就够了吗?

想象下面一种场景:你的新项目在Python 3.3下面开发,而你维护的旧项目,缺工作在Python 2.7之上,为了完成工作,你不得不安装两个Python解释器,并为每个解释器配置virtualenv,在你调试执行的时候,不得不适用冗长的全路径调用解释器,或者不断的修改你的环境变量。天哪,你再次陷入与你的工作无关的,烦人的事情中。

pyenv的出现,就是来拯救你的。pyenv是一个Python多版本管理工具,他设计精巧,通过巧妙的方法,可以使多版本的Python共存在一个操作系统能,简单的实现切换,或者更具项目使用不同的Python。

pyenv支持插件,通过插件,可以和virtualenv完美结合,实现多版本,多环境的控制,是你的每个项目,仿佛运行在一个完全隔离的环境种一样。

安装pyenv

pyenv是纯python开发的,安装pyenv只需要极少数的依赖,它们是::

  • Python >= 2.5 < 3
  • git

因为pyenv是Python开发的,所以需要有一个可运行的python版本,然而,这个不必担忧,绝大多数linux和unix发行版以及mac都已经预装了python,我们唯一需要做的是安装git,并且把他的路径放到PATH中。

如果你能访问Github, 那么安装pyenv是一件简单而快乐的事, 因为pyenv的作者,很贴心的给我们准备了一个安装脚本pyenv-installer,只需要简单的执行就可以了。

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

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

等待一段时间就可以了。安装完成,pyenv-installer会提示你配置pyenv的环境变量,你仅仅需要做的就是根据提示,把如下的内容加入到你的profile里。

export PYENV_ROOT="\${HOME}/.pyenv"

if [ -d "\${PYENV_ROOT}" ]; then
  export PATH="\${PYENV_ROOT}/bin:\${PATH}"
  eval "\$(pyenv init -)"
fi

重新载入profile之后,你就可以开始使用你的pyenv了,使用pyenv-installer安装的pyenv,会帮助我们安装几个有用的插件,其中,最常用的有:

  • pyenv-virtualenv 用于整合virtualenv
  • pyenv-pip-rehash 用于使用pip安装包之后自动执行rehash
  • pyenv-update 用于升级pyenv

使用pyenv安装Python

使用pyenv安装Python非常简单,但是在由于需要编译Python,所以我们需要有变异Python的依赖,以CentOS 6为例,我们需要如下依赖:

  • gcc
  • gcc-c++
  • make
  • patch
  • openssl-devel
  • zlib-devel
  • readline-devel
  • sqlite-devel
  • bzip2-devel

你可以使用你喜欢的包管理器来安装这些依赖,例如:

yum -y install gcc gcc-c++ make patch openssl-devel zlib-devel readline-devel sqlite-devel bzip2-devel

完成以上步骤之后,你可以使用pyenv来管理你的Python环境了。安装Python只需要使用install命令即可。

pyenv install 2.7.5

以上命令将在你的系统上安装 Python-2.7.5, 使用过linux包管理系统的朋友,对这样的安装方式,是相当亲却的。

install命令有若干选项可用,可以通过 pyenv help install来查看。常用的,我们可以通过-l 选项来查看所有可用版本:

pyenv install -l

讲列出所有可用版本。

tips:由于使用pyenv安装的时候,需要到github下载Python源码包,国内用户可能速度比较慢,这个时候,可以修改PYTHON_BUILD_MIRROR_URL环境变量,使用国内镜像。http://magedu-python.qiniudn.com/pythons是我制作的一个镜像,托管在七牛云存储上

安装完成之后,并不能立刻使用你所安装的Python,因为pyenv作为一个Python环境管理工具,安装只是第一步,你还需要切换到你新的Python版本上。pyenv提供两个命令来切换Python版本。global命令和local命令。故名思议,一个是全局的,一个是本地的。

在介绍两个切换命令之前,我们先来看其他几个pyenv命令。

versions和version命令

versions命令列出你已经安装的Python版本以及当前使用的版本

pyenv versions

执行以上输出,你将会得到如下的输出: 

也许你的输出会有所出入,但是大致相同,前面加*号的版本是当前版本,后面括号内的内容描述了它是在何处设置的,后面会详细讲解。

version命令打印你当前使用版本。version命令的输出类似versions命令,但是它只包含了当前版本那一行,并且没有前导的*.

版本名称system代表系统预装Python。

global和local命令

global命令和local命令都是用来切换当前Python版本的命令。不同之处在于,global的切换是全局的,而local的切换是局部的。

pyenv local 2.7.5

以上命令:会在当前目录下创建一个.pyenv-version文件,文件内容为2.7.5,pyenv通过这种形式,标记当前目录使用Python-2.7.5。如果其子目录下面没有.pyenv-version文件,那么此版本讲继承到子目录。

pyenv global 2.7.5

以上命令:会修改$PYENV_HOME/version文件的内容,标记全局Python版本,如何理解全局Python版本,可以认为全局版本是一个默认值,当一个目录及其父目录下面都没有.python-version文件的时候,会使用全局版本。

一般的,我们不修改全局版本,而使用期默认值system,因为在unix系统上,很多系统工具依赖于Python,如果我们修改了Python的版本,会造成绝大多数的依赖Python的系统工具无法使用,如果你不小心修改了,也不要紧张,使用global命令修改回来就可以了,有时候,你发现部分系统工具无法使用,你也可以看看你当前的Python版本。

到这里,你或许已经迫不及待的想要开始了,那么你可以跳过本章之后的部分,直接看第二章,开始你的Python之旅,但是我还是强烈建议你以后回过头来看看本章剩下的部分,他演示了如何使用pyenv结合virtualenv的强大功能。

uninstall 命令

顾名思义,uninstall命令是用来卸载Python版本的,一个已经安装的版本,如果我们不在使用,可以简单的执行uninstall命令把它从硬盘上卸载。

pyenv uninstall 2.7.5

以上命令将卸载Python-2.7.5

pyenv与virtualenv

pyenv通过插件,可以很好的和virtualenv一起工作,通过整合virtualenv,pyenv实现了真正意义上的环境隔离,每个项目都相当于使用一个单独的解释器。

通过pyenv-installer安装的pyenv,已经安装好virtualenv插件了,如果不是通过pyenv-installer安装的pyenv,你可能需要自己安装virtualenv插件,安装方法也很简单:

cd $PYENV_ROOT/plugins
git clone https://github.com/yyuu/pyenv-virtualenv.git

直接把插件clone下来就安装完成了。

安装完成之后,我们可以通过virtualenv命令即可创建虚拟环境,virtualenv的一般用法如下:

pyenv virtualenv [-f|--force] [-u|--upgrade] [VIRTUALENV_OPTIONS] <version> <virtualenv-name>

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

例如:

pyenv virtualenv 2.7.5 my_project

以上命令就创建了一个基于Python-2.7.5,名为my_project的虚拟环境。创建好的虚拟环境犹如一个单独Python版本一样,我们可以通过local或者global命令切换过去。

由于每个解释器间是完全隔离的,所以强烈建议你的每个项目,都放置在单独的虚拟环境中。

virtualenv插件还提供了virtualenvs命令,用于列出所有已经创建的虚拟环境,

pyenv virtualenvs

以上命令列出我们所有已经创建的虚拟环境,已经虚拟环境基于那个Python版本。

当我们的一个项目生命周期结束的时候,我们或许会想要删除虚拟环境以释放我们的硬盘空间,删除虚拟环境非常简单,直接用uninstall命令像删除正常的Python版本一样就可以了。

事实上,虚拟环境一旦创建,你就可以把他当成一个独立的版本来使用和维护了。

二、使用

pyenv virtualenv 2.7.10 jyallprodpy

参考:https://github.com/comynli/pybooklet/blob/master/install.md

时间: 2024-10-19 11:22:17

008_使用pyenv进行py开发环境管理的相关文章

利用假期用Py开发了个开源堡垒机CrazyEye

假期姑娘们都不在身边,又不想到处去看人海,所以呆在家里开发了个堡垒机,现已开源,欢迎大家试用,在使用前,容我先跟大家介绍下堡垒机的重要性! 到目前为止,很多公司对堡垒机依然不太感冒,其实是没有充分认识到堡垒机在IT管理中的重要作用的,很多人觉得,堡垒机就是跳板机,其实这个认识是不全面的,跳板功能只是堡垒机所具备的功能属性中的其中一项而已,下面我就给大家介绍一下堡垒机的重要性,以帮助大家参考自己公司的业务是否需要部署堡垒机. 堡垒机有以下两个至关重要的功能: 权限管理 当你公司的服务器变的越来越多

Python虚拟开发环境

最近,一直在不同版本的Python之间来回折腾,发现了几个Python虚拟开发环境工具,具体如下: 1. Virtualenv,可以指定开发环境的Python版本.继承已有开发环境配置,virtualenv-clone& Virtualenvwrapper是基于virtualenv的开发的. https://virtualenv.pypa.io/en/stable/ https://github.com/edwardgeorge/virtualenv-clone http://virtualen

如何开发auto complete 智能提示功能

目录(?)[+] 如何开发auto complete 智能提示功能 最近网上好像流传用redis实现,其实智能提示和用什么存储关系不大 07年,我过一个类似的项目 我有几千个名字,随着用户在输入框中不断输入汉字或者拼音,用一个下拉列表提示它可能的输入项 下拉框,选中状态,自然是用js做,这里主要讲一下后端代码怎么实现,原理很简单 这就是一个倒排索引表,我们要做的工作,主要是准备这个索引表的数据, 假设我有一个名字 鲁塔夫 第一步,为这个名字生成拼音,把汉字和拼音都放在一个文本文件里面,一行放一条

windows下如何快速搭建web.py开发框架

在windows下如何快速搭建web.py开发框架 用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方便和顺手,就是web.py.它由一名黑客所创建,但是不幸的是这位创建者于2013年自杀了.据说现在由另外一个人在维护和更新.现在就来了解一下windows下如何搭建web.py开发环境. 一.安装web.py 在 https://github.com/webpy/webpy上下载web.py安装包.

在windows下如何快速搭建web.py开发框架

用Python进行web开发的话有很多框架供选择,比如最出名的Django,tornado等,除了这些框架之外,有一个轻量级的框架使用起来也是非常方便和顺手,就是web.py.它由一名黑客所创建,但是不幸的是这位创建者于2013年自杀了.据说现在由另外一个人在维护和更新.现在就来了解一下windows下如何搭建web.py开发环境. 一.安装web.py 在 https://github.com/webpy/webpy上下载web.py安装包.注意github对浏览器版本有要求的,比如不支持IE

Python中级开发教程

Python中级教程索引: 第一课.数据类型                      第十课.图形界面(下) 第二课.再讲数据类型                  第十一课.剪刀石头布游戏与随机函数 第三课.文本处理与色彩(上)             第十二课.获取手机系统信息(上) 第三课.文本处理与色彩(下)             第十二课.获取手机系统信息(下) 第四课.文件操作                      第十三课.选项卡(折叠界面) 第五课.while循环    

python以太坊开发的主要相关技术

使用 python 开发以太坊,有很多技术知识需要学习,也有很多资源可以推荐,我们来看几个主要的: Web3.Py https://github.com/ethereum/web3.py https://pypi.python.org/pypi/web3 web3.py代码库现在已经比较完善了.整个代码库已经被彻底检测,基本实现JavaScript web3.js库中用户熟悉使用的100%的功能. 这个库支持Python 2.7.3.4和3.5. 我最喜欢的一个部分是TestRPCProvide

【Python框架】强大的轻量级开源框架web.py安装详解

Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,都放在了文章结尾,欢迎前来领取! web.py是一个非常强大,轻量的灵活的开源的web框架.著名的社区豆瓣网就使用了web.py开发.所以今天来分享一下web.py的安装... web.py的安装非常简单,几乎也不需要什么配置.是我用过的web框架里面安装配置最简单的了. 环境: Centos6.3 apache(这里也可以不要的,因为web.py自

centos7 .6安装pyenv

一.安装pyenv: 1.>安装依赖包: yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y 2.>安装pyenv包: git clone https://github.com/pyenv/pyenv.git ~/.pyenv 3.>设置环境变量: