文档章节

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

hipnusleo
 hipnusleo
发布于 2016/08/08 14:57
字数 363
阅读 223
收藏 0

环境:

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 版本,

确认版本无误。

参考:

http://yyuu.github.io/pythons/

https://www.zhihu.com/question/49371634/answer/115648746?group_id=745966158896721920

© 著作权归作者所有

hipnusleo
粉丝 0
博文 4
码字总数 2440
作品 0
浦东
私信 提问
生产环境(离线)部署多版本python?

有个项目需要在生产环境跑 python 2.7.12 的程序,操作系统使用红帽6.5 ,默认python版本是2.6.6。因此需要在该环境下部署一套新的python 2.7.12,但不能改变原本系统的python。 我在网上查可...

hipnusleo
2016/08/08
249
3
pyenv管理多个Python版本

前言 我们在CentOS上开发或运行Python程序时,很可能会需要使用不同版本的Python,比如本笔记创建时使用的CentOS是7.4版,系统默认安装的python还是2.7.5,而我们自己开发或者部署时需要的是...

编程老陆
2018/12/30
0
0
Linux 下的 Python 多版本管理(pyenv)

简介 提到 Python 环境管理,更多人可能会首先想到 virtualenv。但与用于创建独立包环境的 virtualenv 不同,pyenv 的作用仅限于维护不同版本的 Python。它的使用不依赖于 Python,是一个简单...

lionets
2014/05/21
0
3
django开发环境部署(二)——python版本控制器pyenv

python版本控制器pyenv 之前的那篇是说明了django环境的site package完全独立出来了,但是使用的python解释器还是系统的,为了继续独立出来,甚至是达到ruby的rvm的自由切换解释器版本,那样...

异类深呼吸
2014/04/24
0
0
Python多版本神器-Pyenv

Python多版本神器-Pyenv 一、简介 使用pyenv可以在一个操作系统上使用多个python版本,自由切换,无比顺畅。它的使用不依赖于Python,是一个简单、独立的纯 shell 脚本工具。 二、Pyenv安装 ...

PowerMichael
2018/06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
2
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部