CentOS下用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境

时间:2022-11-01 20:18:13

安装

系统环境:CentOS 6.5

安装依赖

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

安装pyenv

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

配置环境变量

官方提供方法:

echo -e '\n#pyenv' >>~/.bashrc
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc

直接在bashrc文件中写入:

vim /root/.bashrc

#这段代码的作用主要是指明pyenv的位置, 以便以后可以直接在命令行里面运行pyenv命令。 保存在~/.bashrc 文件中是为了每次用户登陆后自动生效。
export PYENV_ROOT="${HOME}/.pyenv" if [ -d "${PYENV_ROOT}" ]; then
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init -)"
fi #如果你是第一次运行命令并且没有注销的话, 这一段是不会生效的, 我们还需要运行下面的命令令其生效
source ~/.bashrc

pyenv用法

常用命令:

pyenv version        # 查看当前系统使用的python版本
pyenv versions # 查看当前系统拥有的python版本
pyenv install 3.4.1 # 安装3.4.1,可使用-v参数查看详细输出
pyenv uninstall 3.4.1 # 卸载
pyenv local 3.4.1 # local仅对当前目录及子目录生效,告诉当前目录使用版本2.7.5,
pyenv global # 告诉全局环境使用某个版本,为了不破坏系统环境,不建议使用global设置全局版本
pyenv rehash # 重建环境变量,每当你增删 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令

示例

安装某个版本的python

首先我们可以查看一下有哪些版本的python 可以安装

pyenv install --list

结果如下:

2.4
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.5
...

接下来, 作为例子我们安装两个版本 (2.7.1 和 3.3.5)

pyenv install 2.7.1
pyenv install 3.3.5

安装完毕后, 我们可以查看安装的情况

pyenv versions

输出结果如下:

* system (set by /home/tony/.pyenv/version)
2.7.1
3.3.5

简单来说我们已经在这台机器上安装了三个版本的python

system 代表当前系统的python 版本

2.7.1 和 3.3.5是我们用pyenv安装的

*表示当前的python版本, 可以看到, 我们还在使用的是默认的system 自带的python版本

切换python版本做一下测试

既然已经安装了两个其他版本的python, 我们来做一下测试

pyenv global 2.7.1   #全局进行切换到python 2.7.1版本
pyenv local 2.7.1 #只针对当前目录及其子目录切换python 2.7.1版本

这条命令就是将当前python 版本切换到2.7.1

再次运行 pyenv versions, 结果如下:

  system
* 2.7.1 (set by /home/tony/.pyenv/version)
3.3.5

可以看到当前的python 版本已经切换到2.7.1了, 如果还不放心, 直接运行 ‘python’ 命令进行验证:

tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May 9 2014, 01:07:17)
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>>

这里可以清楚看到, 当前版本确实是2.7.1

同理, 我们可以继续用python global在各个版本之间进行切换, 如果要切换回系统版本, 请用:

pyenv global system   #全局进行切换到系统自带python
pyenv local system #只针对当前目录及其子目录切换到系统自带python

如果要卸载某个版本的python, 可以这样:

pyenv uninstall 2.7.1

pyenv virtualenv用法

利用virtualenv 创建虚拟python环境

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

首先我们创建一个2.7.1的虚拟环境

pyenv virtualenv 2.7.1 env271

这条命令在本机上创建了一个名为env271的python虚拟环境,这个环境的真实目录位于:~/.pyenv/versions/

注意,命令中的 ‘2.7.1’ 必须是一个安装前面步骤已经安装好的python版本, 否则会出错。

然后我们可以继续通过 ‘pyenv versions’ 命令来查看当前的虚拟环境, 结果如下:

* system (set by /home/tony/.pyenv/version)
2.7.1
3.3.5
env271

这里我们可以看到, 除了已经安装的python版本, 我们多出了一个env271的python虚拟环境

切换和使用新的python虚拟环境

切换到新的虚拟环境的命令为

pyenv activate env271

接下来我们的python环境就已经切换到2.7.1的虚拟环境了, 运行 ‘python’ 命令认证

(env271)tony@ubuntu:~$ python
Python 2.7.1 (r271:86832, May 9 2014, 01:07:17)
[GCC 4.8.2] on linux3
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到, python版本已经是2.7.1, 而且是在虚拟环境之中 (env271)

下面基本上你就可以在这个虚拟环境里面为所欲为了 :) 再也不用担心系统路径被搞乱的问题了。

如果要切换回系统环境, 运行这个命令即可

pyenv deactivate

那如果要删除这个虚拟环境呢?

pyenv virtualenv-delete env271

至此大功告成!


参考资料:

http://www.cnblogs.com/npumenglei/p/3719412.html

http://www.jianshu.com/p/4646dedaaff5

CentOS下用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境的更多相关文章

  1. 用pyenv 和 virtualenv 搭建单机多版本python 虚拟开发环境

    作为主流开发语言, 用python 开发的程序越来越多. 方便的是大多linux系统里面都默认集成了python, 开发可以随时随地开始. 但有时候这也成为了一个短板, 比如说有时候我们需要开发和调试 ...

  2. 用pyenv和virtualenv搭建单机多版本python虚拟开发环境

    作为主流开发语言, 用python 开发的程序越来越多. 方便的是大多linux系统里面都默认集成了python, 开发可以随时随地开始. 但有时候这也成为了一个短板, 比如说有时候我们需要开发和调试 ...

  3. 如何利用pyenv 和virtualenv 在单机上搭建多版本python 虚拟开发环境

    pyenv 和virtualenv分别是干什么的? pyenv帮助你在一台机上建立多个版本的python环境, 并提供方便的切换方法. virtualenv则就是将一个目录建立为一个虚拟的python ...

  4. python虚拟开发环境搭建(virtualenv和virtualenvwrapper)

    虚拟开发环境的搭建 (0) 搭建虚拟环境的意义 使不同的开发环境独立 环境升级不影响其他开发环境,也不影响全局 防止包管理的混乱 (1) 指定 虚拟环境的创建目录 环境变量设置 创建 WORKON_H ...

  5. 使用virtualenv搭建python虚拟开发环境

    在使用python做开发时,如果多人需要在同一台机器上工作,或者机器环境经常变化时, 添加或删除一些python包很可能会影响到你自己的开发环境. 因此,通过virtualenv工具可以创建一个完全属 ...

  6. OSX编译安装Python3及虚拟开发环境Virtualenv

    0X00.前言 因为工作原因,最近主要做Python开发,刚好电脑系统重装之后所有的东西都需要重新配置.此文主要记录OSX下通过源码编译安装Python3以及安装虚拟开发环境Virtualenv. 0 ...

  7. centos6.5下Python IDE开发环境搭建

    *不是想做什么就做什么,而是想不做什么就不做什么.        ---摘抄于2016/11/30晚 之前学习了一段时间的Python,但所有部署都在windows上.正赶上最近在学习liux,以后 ...

  8. windows下python web开发环境的搭建

    windows下python web开发环境: python2.7,django1.5.1,eclipse4.3.2,pydev3.4.1 一. python环境安装 https://www.pyth ...

  9. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境

    本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...

随机推荐

  1. 完美解决 向UILable 文字最后插入N张图片,支持向限制行数的UILable 最后一行插入,多余文字显示...

    效果: ====直接上代码吧=== // // UILabel+StringFrame.h // QYER // // Created by qyer on 15/3/19. // Copyright ...

  2. [leetcode]_Container With Most Water

    题目:在二维坐标系下,有很多个挡板,有两个挡板之间能够积蓄的水的最大面积.如下图所示: 思路:我只想到暴力解法,用O(n2)的时间复杂度算出任意两个挡板形成的面积,这必须的过不了. 优化解法:O(n) ...

  3. 浅谈Objective-C对象初始化的三类程序猿

    序 早上看了位仁兄写了<Swift:让人眼前一亮的初始化方式>的文章.什么?!初始化?Objective-C!好吧,吓哔哔~~~ 一.普通程序猿 普通程序员使用最常见路人姿势等场.普普通通 ...

  4. flask简单web应用

    推荐一个学习python的网站,个人觉得在这里面收获挺大的,希望对后来学习flask的小伙伴们有帮助.http://www.pythondoc.com/ 用flask框架实现第一个web应用 首先需要 ...

  5. (十二)java嵌套类和内部类

    嵌套类和内部类:在一个类里边定义的类叫做嵌套类,其中没有static修饰的嵌套类是我们通常说的内部类,而被static修饰的嵌套类不常用.有的地方没有嵌套类和内部类的区分,直接是嵌套类就称作内部类,没 ...

  6. CodeForces - 939A,解题报告

    题意:给出一个n个点有向图,问是否存在三个点,这三个点构成一个回路.n<=5000 模拟即可. 注意是必须三个点 多了居然不行. import java.util.*; public class ...

  7. re库

    一.Re库的主要功能: 函数 功能 re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 re.match() 在一个字符串的开始位置匹配正则表达式,返回match ...

  8. js 星星效果思路

    //星星的效果思路 1.获取需要修改的元素 ul li 跟p 布局 2.给li 加移入事件 更改提示框显示, 3.给li 加移出事件 更改提示框隐藏 4.给li加索引值代表自己的序号 5.在li移入时 ...

  9. JavaScript的valueOf和toString

    深度好文 http://www.cnblogs.com/coco1s/p/6509141.html 知识要点 不同对象调用valueOf和toString的顺序不一样 高阶函数的使用,替代for循环 ...

  10. 一个正则表达式&comma;只含有汉字、数字、字母、下划线&comma;下划线位置不限【Z】

    1.一个正则表达式,只含有汉字.数字.字母.下划线不能以下划线开头和结尾: ^(?!_)(?!.*?_$)[a-zA-Z0-9_\u4e00-\u9fa5]+$ 其中: ^ 与字符串开始的地方匹配 ( ...