记录一次在内网Linux环境安装Python的经历

20 篇文章 0 订阅

目标

因工作需要,希望在内网的一台Linux Server上安装Python及相关工具包。但在实际安装过程中,遇到了缺少依赖包等问题。

安装时问题

缺少依赖软件包或模块

$ ./configure --prefix=/usr/local/python-2.7
$ make
running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers

Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _curses            _curses_panel   
_sqlite3           _ssl               _tkinter        
bsddb185           bz2                dbm             
dl                 gdbm               imageop         
readline           sunaudiodev                        
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

running build_scripts
##编译时,提示缺失部分模块

zlib模块找不到

#修改Python安装源文件中Modules/Setup.py,去掉#
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
$ ./configue --prefix=...
$ make
#提示:
Python build finished, but the necessary bits to build these modules were not found:
_bsddb             _curses            _curses_panel   
_sqlite3           _ssl               _tkinter        
bsddb185           bz2                dbm             
dl                 gdbm               imageop         
readline           sunaudiodev                        
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

running build_scripts

此处,虽然python2.7.9安装成功,但缺少很多模块。

升级系统原有2.4版python

$ python -V #检测系统原有python版本,发现为2.4版。
$ cd /usr/bin
$ mv python /usr/bin/python_v24bak.bak #重命名原python
$ ln -s /usr/local/python-2.7/bin/python ./python #建立软链接到python2.7
$ python -V #检测目前的python版本,发现已变更为2.7.9
#注意:因为yum依赖系统自带的原python2.4版本,为保证yum正常执行,还需要编辑yum,
#修改第一行#!/usr/bin/python 为:#!/usr/bin/python2.4

此处的升级过程中,又不可避免地变更了系统原有的python。

安装setuptools

若想安装python某些模块,需要首先安装好setuptools。

#上传setuptools-15.2.tar.gz并解压:setuptools
$ cd setuptools-15.2
$ python setup.py install
# 安装成功,提示:
...
Processing setuptools-15.2-py2.7.egg
Copying setuptools-15.2-py2.7.egg to /usr/local/lib/python2.7/site-packages
Adding setuptools 15.2 to easy-install.pth file
Installing easy_install script to /usr/local/bin
Installing easy_install-2.7 script to /usr/local/bin

Installed /usr/local/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg
Processing dependencies for setuptools==15.2
Finished processing dependencies for setuptools==15.2

此处,虽然安装好了setuptools,但因无法直接联网,导致很多软件仍然无法自主安装。

安装soaplib工具包

安装soaplib提示依赖lxml;安装lxml时,发生报错:

...
src/lxml/lxml.etree.c:201156: 错误:‘xsltDocLoaderFunc’ 未声明 (在此函数内第一次使用)
src/lxml/lxml.etree.c:201156: 错误:expected ‘)’ before ‘__pyx_f_4lxml_5etree__xslt_doc_loader’
error: command 'gcc' failed with exit status 1

此处需要先安装依赖: libxml2-devel, libxslt-devel;而按照libxml2-devel时,则提示需要依赖zlib-devel

#  rpm -ivh libxml2-devel-2.6.26-2.1.21.el5_9.3.i386.rpm 
warning: libxml2-devel-2.6.26-2.1.21.el5_9.3.i386.rpm: Header V3 DSA signature: NOKEY, key ID e8562897
error: Failed dependencies:
        zlib-devel is needed by libxml2-devel-2.6.26-2.1.21.el5_9.3.i386

以上,依赖包太难找,短期内无解!

最终的解决办法

经过此问题,可以看到,我们需要的是一个独立的python安装包,能尽量做到不依赖外部环境。通过查找,发现Anaconda可以满足要求。

什么是Anaconda

Anaconda Python 是完全免费的企业级的Python集成软件包。主要用于大规模数据处理、预测分析和科学计算。它自带的科学计算包注意包括:numpy, sicpy, matplotlib, spyder等。
更多资料,请参考Anaconda官网

为什么选择Anaconda

主要理由:1、在Linux系统里面,Anaconda只依赖一个bash命令即可安装,且所有的东西都只安装在一个目录中。这意味着它不需要过多依赖linux本地环境。2、它通过conda命令进行自动安装、更新和删除,这说明它对包的管理比较规范。当然,笔者对该工具的使用尝试也是刚刚开始,不排除将来触碰到其局限性。本文仅做参考。

安装及使用

首先,在官网下载相关软件包。
然后,在服务器上安装。安装命令非常简单:

$ bash Anaconda-2.2.0-Linux-x86.sh
#开始安装,安装时可自主指定安装目录。安装成功后,查看:
$ which conda
/home/anaconda/bin/conda

Anaconda自带了很多非常有用的包,但若希望继续安装自己需要的包,可通过conda命令进行安装。这是因为conda与pip关联得很好,可以很方便地自主安装、升级工具包。比如,若希望安装cx_Oracle,则:

$ conda install cx_Oracle #使用conda命令安装cx_Oracle
Fetching package metadata: ....
Solving package specifications: .
Package plan for installation in environment /home/anaconda:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    oracle-instantclient-11.2.0.4.0|                0        54.0 MB
    conda-env-2.1.4            |           py27_0          15 KB
    cx_oracle-5.1.2            |           py27_0         151 KB
    python-2.7.9               |                3        13.4 MB
    requests-2.7.0             |           py27_0         594 KB
    setuptools-15.2            |           py27_0         435 KB
    conda-3.12.0               |           py27_0         167 KB
    pip-6.1.1                  |           py27_0         1.4 MB
    ------------------------------------------------------------
                                           Total:        70.1 MB

The following NEW packages will be INSTALLED:

    cx_oracle:            5.1.2-py27_0 
    oracle-instantclient: 11.2.0.4.0-0 

The following packages will be UPDATED:

    conda:                3.10.0-py27_0 --> 3.12.0-py27_0
    conda-env:            2.1.3-py27_0  --> 2.1.4-py27_0 
    pip:                  6.0.8-py27_0  --> 6.1.1-py27_0 
    python:               2.7.9-2       --> 2.7.9-3      
    requests:             2.6.0-py27_0  --> 2.7.0-py27_0 
    setuptools:           14.3-py27_0   --> 15.2-py27_0  

Proceed ([y]/n)? y
Fetching packages ...
oracle-instant 100% |######################################################################| Time: 0:13:16  71.05 kB/s
conda-env-2.1. 100% |######################################################################| Time: 0:00:00  32.06 kB/s
cx_oracle-5.1. 100% |######################################################################| Time: 0:00:02  69.64 kB/s
python-2.7.9-3 100% |######################################################################| Time: 0:03:33  65.52 kB/s
requests-2.7.0 100% |#############################################################################| Time: 0:00:14  41.45 kB/s
setuptools-15. 100% |#############################################################################| Time: 0:00:08  50.05 kB/s
conda-3.12.0-p 100% |#############################################################################| Time: 0:00:02  62.71 kB/s
pip-6.1.1-py27 100% |#############################################################################| Time: 0:01:02  23.24 kB/s
Extracting packages ...
[      COMPLETE      ] |###############################################################################################| 100%
Unlinking packages ...
[      COMPLETE      ] |###############################################################################################| 100%
Linking packages ...
[      COMPLETE      ] |###############################################################################################| 100%

当然,一般情况下,也可以采用easy_install进行安装。

最后,当在一台机器上安装完毕后,可以将下载的package或egg文件平移到其他的目标服务器上。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pierre_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值