pyenv进行python版本本地安装

pyenv 是一个针对python的多版本管理工具。使用pyenv可以很轻松的在一个系统上使用不同版本的python,并实现轻松的切换。 关于pyenv的更多介绍可以参考:https://github.com/yyuu/pyenv

pyenv install 命令用于在系统上安装python, 比如pyenv install 3.5.0 则可以帮助我们安装python 3.5.0.
然而,由于墙等原因, pyenv install 可能下载速度非常慢,甚至下载失败。本文主要介绍pyenv如何使用本地的python安装包,安装python。

本地安装,首先需要下载安装包,如Python-3.5.0.tar.xz。
pyenv并没有提供使用本地包安装python的命令。所以无法直接使用命令安装。

我们要了解pyenv的安装原理, 其实它是利用了python-build工具,从python官网下载python包,然后安装。

我的pyenv路径是:/usr/opt/pyenv/ 对应的python-build路径就为/usr/opt/pyenv/plugins/python-build/share/python-build.

而在/usr/opt/pyenv/plugins/python-build/share/python-build (注意路径比python-build多了两层)中有各种python版本的安装指令, 如3.5.2 版本:

windeal@ubuntu:python-build$ cat 3.5.0
#require_gcc
install_package "openssl-1.0.2g" "https://www.openssl.org/source/openssl-1.0.2g.tar.gz#b784b1b3907ce39abf4098702dade6365522a253ad1552e267a9a0e89594aa33" mac_openssl --if has_broken_mac_openssl
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
if has_tar_xz_support; then
  install_package "Python-3.5.0" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz#d6d7aa1634a5eeeca6ed4fca266982a04f84bd8f3945a9179e20b24ad2e2be91" ldflags_dirs standard verify_py35 ensurepip
else
  install_package "Python-3.5.0" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz#584e3d5a02692ca52fce505e68ecd77248a6f2c99adf9db144a39087336b0fe0" ldflags_dirs standard verify_py35 ensurepip
fi
windeal@ubuntu:python-build$ 

其中在install_package "Python-3.5.0" ... 这一行指定了python3.5.0的获取方式,我们将其修改为:

windeal@ubuntu:python-build$ cat 3.5.0
#require_gcc
install_package "openssl-1.0.2g" "https://www.openssl.org/source/openssl-1.0.2g.tar.gz#b784b1b3907ce39abf4098702dade6365522a253ad1552e267a9a0e89594aa33" mac_openssl --if has_broken_mac_openssl
install_package "readline-6.3" "https://ftpmirror.gnu.org/readline/readline-6.3.tar.gz#56ba6071b9462f980c5a72ab0023893b65ba6debb4eeb475d7a563dc65cafd43" standard --if has_broken_mac_readline
if has_tar_xz_support; then
#  install_package "Python-3.5.0" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tar.xz#d6d7aa1634a5eeeca6ed4fca266982a04f84bd8f3945a9179e20b24ad2e2be91" ldflags_dirs standard verify_py35 ensurepip
  install_package "Python-3.5.0" "/usr/opt/pyenv/cache/Python-3.5.0.tar.xz" ldflags_dirs standard verify_py35 ensurepip
else
  install_package "Python-3.5.0" "https://www.python.org/ftp/python/3.5.0/Python-3.5.0.tgz#584e3d5a02692ca52fce505e68ecd77248a6f2c99adf9db144a39087336b0fe0" ldflags_dirs standard verify_py35 ensurepip
fi
windeal@ubuntu:python-build$ 

其中/usr/opt/pyenv/cache/ 是我们存放本地安装包的路径。 (可能不存在需要自己创建,目录名cache不能随意更改)。

然后执行pyenv install 3.5.0 即可。
(建议使用pyenv install 3.5.0 -v, -v是用于输出详细安装信息的。 因为编译需要比较长时间,如果不加-v可能误认为命令没有执行,卡住了。)

安装完毕后执行下exec $SHELL 重置下shell环境
可以通过pyenv global 设置要使用的python版本。

注意点:
本地安装需要一些依赖库,否则可能会安装失败。
可以根据报错信息修改。

我在安装的时候遇到了下面错误:

ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

这是提示缺乏ssl库,我是用的是Ubuntu,使用下列命令安装openssl库(其它系统可能有所区别):

sudo apt install libssl-dev
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值