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  []

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 ' 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 的。

你可能感兴趣的:(python 的版本管理-pyenv)