红联Linux门户
Linux帮助

通过pyenv离线部署不同版本的python环境

发布时间:2016-09-14 16:05:21来源:linux网站作者:hipnusleo
环境:
CentOS 6.5 (Redhat 6.5还待测试)
从github (https://github.com/yyuu/pyenv) 下载pyenv,然后解压
 
环境变量配置:
export PYENV_ROOT="$HOME/pyenv-master"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
 
然后通过pyenv install 可以安装不同版本的python,考虑到很多生成环境是没有外网条件,可以通过以下方法配置本地镜像源,实现离线安装:
 
首先,需要下载你需要版本的python安装包,以2.7.12为例:
wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tar.xz
 
需要修改文件名为 sha64位码,可以借用以下方法(从别人那cp的)计算:
#!/usr/bin/evn python
# -*- coding:utf-8 -*-
import os
import hashlib
import sys
def get_hash(filepath):
if not os.path.exists(filepath):
print('File not exists.')
return
# algo = hashlib.md5()
algo = hashlib.sha256()
with open(filepath, 'rb') as f:
while True:
data = f.read(4096)
if not data:
break
algo.update(data)
return algo.hexdigest()
if __name__ == '__main__':
md5sum = get_hash('Python-2.7.12.tar.xz')
print(md5sum)
 
然后在python 包所在目录下启动一个http服务器:
python2 -m SimpleHTTPServer
 
接着,让pyenv直接pull该地址上的安装包:
export PYTHON_BUILD_MIRROR_URL="localhost:8000"
 
执行 pyenv install 2.7.12
完成安装后,通过 pyenv versions 可以看见当前拥有的python版本。
 
有时候会出现编译错误,可以一般是一些依赖包没有装,例如 readline ,readline-devel 等等。
Under Ubuntu, depended packages have different name, such as:
bzip2 lib =>  libbz2-dev
SQLite3 lib => libsqlite3-dev
OpenSSL lib => libssl-dev
libffi-dev
 
检查python 版本
通过pyenv离线部署不同版本的python环境
确认版本无误。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/24165.html