在centos上部署Python之前,我们需要先配置开发环境。

1.安装Python依赖的开发工具包

  gcc自然少不了,可以直接用“Development Tools”:

yum grouplist    #查看可安装的包
yum groupinstall "Development tools" #含有空格用引号括起来
whereis gcc #查看gcc安装位置
gcc --version #查看gcc安装版本

  还有其他一些依赖包

install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel

#zlib-devel
#bzip2-devel
#openssl-devel
#ncurses-devel
#sqlite-devel
#readline-devel
#tk-devel

  

2.安装最新Python3.6

  查看安装的Python信息:

python -V

  然后查看一下Python可执行文件的位置:

which python

#输出:/usr/bin/python

  进入到bin目录,查看python文件:

cd /usr/bin

ls -al python*

输出:
lrwxrwxrwx. 1 root root 7 Dec 20 2016 python -> python2
lrwxrwxrwx. 1 root root 9 Dec 20 2016 python2 -> python2.7
-rwxr-xr-x. 1 root root 7136 Nov 6 2016 python2.7
#可以看到可执行文件python指向python2,python2又指向python2.7也就是说Python命令执行的系统预装的Python2.7。

  要安装Python的其他版本先执行mv python python.bak命令备份python文件。

mv python python.bak

[root@jdu4e00u53f7 bin]# ls python*
python2 python2.7 python.bak

  安装新版本的Python:

  

# cd /usr/local/src    #回到src目录
# wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz #下载最新python
# tar -zxvf Python-3.6.3.tgz #解压缩到当前路径

  ps:国内官网下载python网速非常慢,可以先在其他地方下载下来再上传至服务器

  加压缩之后该目录下出现Python-3.5.1文件夹,进入到文件夹下执行编译安装。

cd Python-3.6.3
# ./configure --prefix=/usr/local/python/python3
# make && make altinstall

执行 ./configure --prefix=/usr/local/python/python3 命令。./configure命令执行完毕之后创建一个文件creating Makefile,供下面的make命令使用 执行make install之后就会把程序安装到我们指定的目录中去。

Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。

其中--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放
在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。

如果配置--prefix,如:
./configure --prefix=/usr/local/test
可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。
用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,
就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。

当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。

然后执行make、make install命令。

安装成功之后进入到python3文件夹可以看到Python的可执行文件目录、lib目录等相关目录。

  ps:有个一个非常重要的步骤是我们使用的是make altinstall。如果使用make install,你将会看到在系统中有两个不同版本的Python在/usr/bin/目录中。这将会导致很多问题,而且不好处理。

[root@jdu4e00u53f7 python3]# ls -l
total 0
drwxr-xr-x 2 root root 169 Nov 13 22:10 bin
drwxr-xr-x 3 root root 24 Nov 13 22:10 include
drwxr-xr-x 4 root root 63 Nov 13 22:10 lib
drwxr-xr-x 3 root root 17 Nov 13 22:10 share

  这样Python3.6就默认安装到了/usr/local/python/python3、bin,libpython3.6.so这个库安装到了/usr/local/python/python3/lib下面,但是现在Python 3.6还无法启动,因为默认的共享库加载路径还没有指向libpython3.6.so所在的目录。

  

  新增Python 3.5共享库加载路径:

  需要把 /usr/local/python/python3/lib 保存到配置文件中,保存在 /etc/ld.so.conf.d中 ,并执行ldconfig命令:

# echo "/usr/local/python/python3/lib" >> /etc/ld.so.conf
# ldconfig

  安装Python3.6至 /usr/local/bin/,创建软连接

# ln -s /usr/local/python/python3/bin/python3.6 /usr/bin/python

  确认是否安装正确

[root@jdu4e00u53f7 bin]# python -V
Python 3.6.3
[root@jdu4e00u53f7 bin]# python
Python 3.6.3 (default, Nov 13 2017, 22:08:41)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

  至此,python就安装成功了。但是这时yum一般会出问题,这是只要编辑/usr/bin/yum和/usr/libexec/urlgrabber-ext-down这两个文件

vi /usr/bin/yum

vi /usr/libexec/urlgrabber-ext-down

  修改这两个文件的头部#!/usr/bin/python改成#!/usr/bin/python2 现在再去测试一下yum基本都可用了。

3.安装python所需库  

  安装Easy_Install

# cd /usr/local/src
# wget https://pypi.python.org/packages/source/s/setuptools/setuptools-18.0.1.zip
使用镜像路径下载:
# wget http://pypi.doubanio.com/packages/0f/22/7fdcc777ba60e2a8b1ea17f679c2652ffe80bd5a2f35d61c629cb9545d5e/setuptools-36.7.2.zip
# unzip setuptools-36.7.2.zip
# cd setuptools-36.7.2
# /usr/bin/python setup.py install
# mv /usr/bin/easy_install /usr/bin/easy_install.bak
# ln -s /usr/local/python/python3/bin/easy_install /usr/bin/easy_install

  尝试运行easy_install报错;

Traceback (most recent call last):
File "/usr/bin/easy_install", line 11, in <module>
load_entry_point('setuptools==36.7.2', 'console_scripts', 'easy_install')()
File "/usr/local/python/python3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 565, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/local/python/python3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2631, in load_entry_point
return ep.load()
File "/usr/local/python/python3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2291, in load
return self.resolve()
File "/usr/local/python/python3/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2297, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/local/python/python3/lib/python3.6/site-packages/setuptools-36.7.2-py3.6.egg/setuptools/command/easy_install.py", line 47, in <module>
File "/usr/local/python/python3/lib/python3.6/site-packages/setuptools-36.7.2-py3.6.egg/setuptools/sandbox.py", line 15, in <module>
ModuleNotFoundError: No module named 'pkg_resources.py31compat'

  可能是安装了两个版本的setuptools,先不管,接着安装pip

  安装Pip

$ cd /usr/local/src
# 下载源代码
$ wget --no-check-certificate https://github.com/pypa/pip/archive/9.0.1.tar.gz
$ tar -zvxf 9.0.1.tar.gz # 解压文件
$ cd pip-9.0.1
# 使用 Python 3 安装
$ python setup.py install

  卸载easy_install,并删除site-packages下的egg文件

pip uninstall setuptools
rm setuptools-36.7.2-py3.6.egg

  重新安装

# cd setuptools-36.7.2
# /usr/bin/python setup.py install

  安装成功,运行不再报错了。

  参考:http://moelove.info/2017/06/30/Install-Python3-6-on-CentOS7/

     https://github.com/pypa/setuptools/issues/1167

      

centos部署Python环境的更多相关文章

  1. CentOS 5系统安装Django、Apache 、mod_wsgi部署Python环境教程

    Django,是一款针对Python环境的WEB开发框架,能够帮助我们构架快捷.简单的WEB框架设置,Django框架非常适合开发内容应用环境,所以在本文中,麦子将整理基于Centos系统部署安装Dj ...

  2. python-pycharm中使用anaconda部署python环境

    pycharm中使用anaconda部署python环境 今天来说一下python中一个管理包很好用的工具anaconda,可以轻松实现python中各种包的管理.相信大家都会有这种体验,在pycha ...

  3. 离线环境下自动化部署python环境(含openssl)

    遇到有项目要在内网环境下安装python项目,所以空余时写了自动化部署python环境和python项目的脚本,由于项目涉密,这里仅提供自动化部署python环境的shell脚本,包括openssl的 ...

  4. Centos系统Python环境搭建和项目部署

    目录 一.Python 1. 源安装 Python3 2. SCL安装 Python3 3. 虚拟环境venv 4. 安装Flask 5. 安装gunicorn 二.安装Nginx 1. 安装Ngin ...

  5. k8s构建镜像-基于centos的python环境+pip

    FROM centos:7.4.1708 #维护者信息MAINTAINER by icdss # 标签LABEL version="1.0" # 安装依赖RUN yum -y up ...

  6. centos部署golang环境

    目录 一.简介 二.部署 一.简介 Go语言(或 Golang)起源于 2007 年,并在 2009 年正式对外发布.Go 是非常年轻的一门语言,它的主要目标是"兼具 Python 等动态语 ...

  7. python如何离线装包 离线如何部署python环境

    1,安装python windows: 我用的是python3.6.6.exe安装包,需要提前下载好 ubuntu: 自带的python,如果是ubuntu18.04的话,自带的应该是3.6.8 2, ...

  8. Anaconda部署python环境

    Anaconda安装 首先进入到anaconda的官网,如下图所示,会看到anaconda的下载页面: 2.下拉或者单击图中的Windows选项,得到如下图所示的界面,此时可以根据自己需要的版本进行相 ...

  9. CentOS部署PHP环境

    1.安装apache yum -y install httpd httpd-devel 2.启动apache systemctl start httpd.service 检查apache状态 syst ...

随机推荐

  1. 神奇的矩阵(bzoj 2396)

    Description 给出三个行数和列数均为N的矩阵A.B.C,判断A*B=C是否成立. Input 题目可能包含若干组数据.    对于每组数据,第一行一个数N,接下来给出三个N*N的矩阵,依次为 ...

  2. Bzoj1195 [HNOI2006]最短母串 [状态压缩]

    Time Limit: 10 Sec  Memory Limit: 32 MBSubmit: 1304  Solved: 439 Description 给定n个字符串(S1,S2,„,Sn),要求找 ...

  3. 洛谷P2168 荷马史诗 [NOI2015]

    题目描述 追逐影子的人,自己就是影子 ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛&g ...

  4. js scrollTop, 滚动条操作

    设置页面加载时滚动条自动滚到底的方法: jQuery: 复制代码 代码如下: $(function(){ var h = $(document).height()-$(window).height() ...

  5. dedeCMS php标签使用说明和数据库查询说明

    1.{dede:php}标签想要输出信息 可以直接使用printf , echo,var_dump 之类的打印出来   赋值给@me 无效 2.结合sql语句使用方法 例:{dede:php} $ro ...

  6. 【Visual Studio】Visual Studio 2010 "LNK1123: 转换到 COFF 期间失败: 文件无效或损坏" 的解决方法

    1.将 项目|项目属性|配置属性|连接器|清单文件|嵌入清单 “是”改为“否”. 2.找到 C:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5 ...

  7. Android中节操播放器JieCaoVideoPlayer使用

    效果 使用 即便是自定义UI,或者对Library有过修改,也是这五步骤来使用播放器. 1.添加类库 compile 'cn.jzvd:jiaozivideoplayer:6.0.0' 2.添加布局 ...

  8. win10下安装redis

    Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择, ...

  9. Mycat 做简单的读写分离(转载)

    大漠小狼的个人空间   http://www.51testing.com/html/34/369434-3686088.html 使用Mycat 做简单的读写分离(一) 原本使用的是amoeba做的读 ...

  10. 洛谷——P1306 斐波那契公约数

    P1306 斐波那契公约数 题目描述 对于Fibonacci数列:1,1,2,3,5,8,13......大家应该很熟悉吧~~~但是现在有一个很“简单”问题:第n项和第m项的最大公约数是多少? 输入输 ...