python 的版本管理-pyenv

查看python 的版本:

$ python
python
python2
python2.7
python2.7-config
python2-config
python3
python3.4
python3.4-config
python3.4m
python3.4m-config
python3-config
python-argcomplete-check-easy-install-script
python-config
python-local-exec

查看某一版本的python 的具体路径:

$ which python3.4
~/.pyenv/shims/python3.4

pyenv

安装pyenv

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ exec $SHELL -l

查看可安装的版本

$ pyenv install --list

该命令会列出可以用pyenv安装的Python版本

安装指定版本

# 使用如下命令即可安装python 3.4.1:
$ pyenv install 3.4.1 -v

# 使用如下命令即可安装python 3.5.2:
$ pyenv install 3.5.2 -v

更新数据库

安装完成之后需要对数据库进行更新:

$ pyenv rehash

查看当前已安装的python版本

$ pyenv versions
* system (set by /home/seisman/.pyenv/version)
3.4.1

其中的星号表示当前正在使用的是系统自带的python。

设置全局的python版本

$ pyenv global 3.4.1
$ pyenv versions
system* 3.4.1 (set by /home/seisman/.pyenv/version)

当前全局的python版本已经变成了3.4.1。也可以使用pyenv local
pyenv shell临时改变python版本。

# 临时改变环境为 python3.4.4
$ pyenv local 3.4.4
# 在交互式命令行查看
$ python
Python 3.4.4 (default, Apr 11 2016, 13:41:37)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

确认python版本

$ python
Python 3.4.1 (default, Sep 10 2014, 17:10:18)[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linuxType "help", "copyright", "credits" or "license" for more information.>>>

查看帮助:

$ pyenv -h
pyenv 20151105-4-g9ca7de5
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/yyuu/pyenv#readme

常见问题及解决:

# 尝试安装 3.4.4, 3.5.1,3.5.2 都失败。
$ pyenv install 3.4.4 -v
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/yyuu/pyenv/wiki/Common-build-problems


BUILD FAILED (Ubuntu 14.04 using python-build 1.0.2)

Inspect or clean up the working tree at /tmp/python-build.20160922182222.4415
Results logged to /tmp/python-build.20160922182222.4415.log

Last 10 log lines:
(cd /home/pabb/.pyenv/versions/3.4.4/share/man/man1; ln -s python3.4.1 python3.1)
if test "xupgrade" != "xno"  ; then \
        case upgrade in \
            upgrade) ensurepip="--upgrade" ;; \
            install|*) ensurepip="" ;; \
        esac; \
         ./python -E -m ensurepip \
            $ensurepip --root=/ ; \
    fi
Ignoring ensurepip failure: pip 7.1.2 requires SSL/TLS

##解决:

$ apt-get install libssl-dev


Installing collected packages: setuptools, pip
Successfully installed pip-8.1.1 setuptools-20.10.1
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?
Installed Python-3.5.2 to /home/pabb/.pyenv/versions/3.5.2
/tmp/python-build.20160926162640.21038 ~

# 解决


pyenv本地安装python版本

操作实例:


1. 在ssh窗口window1 中下载对应的python包。
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz



2. 下载成功之后,在window1中开启一个web server。
如下启动了一个web server, 监听8000 端口。
python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...


3. 重新打开一个ssh窗口window2, 修改PYTHON_BUILD_MIRROR_URL指向window1 中启动的web server.
因为在本机操作,使用了 localhost:8000, 如果是其他服务器器,可以使用对应的ip或hostname.

export PYTHON_BUILD_MIRROR_URL="localhost:8000"
或者:
export PYTHON_BUILD_MIRROR_URL="lb-1:8000"


安装 3.6.1,添加参数 -v, 显示安装过程的详细信息。 

pyenv 3.6.1 -v 

此时仍然安装失败。

4. 回到 window1 中,可以看到如下日志,可以看到请求的资源名为 a01810ddfcec216bcdb357a84bfaafdfaa0ca42bbdaa4cb7ff74f5a9961e4041

127.0.0.1 - - [15/Jul/2017 12:51:04] code 404, message File not found
127.0.0.1 - - [15/Jul/2017 12:51:04] "HEAD /a01810ddfcec216bcdb357a84bfaafdfaa0ca42bbdaa4cb7ff74f5a9961e4041 HTTP/1.1" 404 -



5. 在window2 中更改资源包名。

cp Python-3.6.1.tar.xz a01810ddfcec216bcdb357a84bfaafdfaa0ca42bbdaa4cb7ff74f5a9961e4041

再重新执行安装命令,此时就能正常安装了
pyenv 3.6.1 -v 

pyenv使用镜像加速
http://www.tuicool.com/articles/jAFzYrV
简介:
基本思路都是从国内镜像下载包。如果国内镜像不可用,自己搭建一个。

pyenv 安装下载好的python版本
http://bbs.51cto.com/thread-1471897-1.html

简介:

使用pyenv安装不同版本程序包时,由于网络速度,外网隔离等问题,不能顺畅使用 pyenv install 3.5.2 安装各个版本
解决方法:
1、  先下载好安装程序包
2、  启动一个本地HTTP下载服务器
python -m SimpleHTTPServer
3、  新开一个SSH窗口,让pyenv直接pull该地址上的安装包:
export PYTHON_BUILD_MIRROR_URL="localhost:8000"
4、  执行安装命令 
pyenv install 3.5.2
5、   返回HTTP服务窗口,查看pyenv请求的资源名,把中间这一串64位字符复制下来
   "HEAD /0010f56100b9b74259ebcd5d4b295a32324b58b517403a10d1a2aa7cb22bca40 HTTP/1.1" 404  
6、  更改python安装包名
cp  Python-3.5.2.tar.xz 0010f56100b9b74259ebcd5d4b295a32324b58b517403a10d1a2aa7cb22bca40 
7、   再重新执行安装命令,此时就能正常安装了。
pyenv install 3.5.2

pyenv 安装本地版本
http://www.cnblogs.com/uangyy/p/6186427.html
简介:
安装本地版本...

使用了 python -m SimpleHTTPServer 8000 的方法。

扩展阅读:

Python多版本共存之pyenv
http://seisman.info/python-pyenv.html
简介:
很好的介绍。

NOTE:
redhat, centos中yum 也是依赖 python 的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,000评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,745评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,561评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,782评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,798评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,394评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,952评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,852评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,409评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,483评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,615评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,303评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,979评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,470评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,571评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,041评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,630评论 2 359

推荐阅读更多精彩内容