Centos6.8:源碼安裝python2.7.14(和自帶的python2.6共存)

1. 前言

  • centos自帶python2.6,由於yum指令是依賴python2.6的,爲了確保yum的正常使用,千萬不要升級python2.6或卸載python2.6,只需要安裝python2.7,讓它們倆共存就好,使用的時候用python2.7來加以區分。
  • 選擇源碼安裝方式,因爲全網能搜到的安裝方式都是源碼安裝,我也很絕望啊,雖然有rpm包但不是官方的我很慌啊,什麼時候能yum install python2.7.14就牛逼了
  • 首先切換到root用戶,不用敲sudo:sudo su

2. 安裝依賴庫

  • 很重要!很重要!很重要!我纔不會說因爲輕視依賴庫導致pip報錯裝不上還折騰了一大圈。。
# yum groupinstall Development tools  # 這句我沒用到
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install gcc
  • 以上是直接複製別的博客的,這裏稍微解析一下我所知道的一些依賴庫如果缺少的時候會怎樣出錯:
    • zlib-devel:缺少的時候在檢測安裝環境的時候就會報錯
    • openssl-devel:缺少的時候安裝pip的時候出錯
    • readline-devel:缺少的時候在安裝python完成後使用python交互界面的時候按退格鍵會出現^H的現象,無法愉快使用
    • gcc:缺少的時候無法編譯

3. 源碼安裝python2.7.14

cd /home/user
wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz
tar xvf Python-2.7.14.tgz
cd Python-2.7.14
./configure --prefix=/usr/local/python2.7.14    # 指定安裝路徑到/usr/local/python2.7.14目錄下(檢測安裝環境)
make >& LOG_make &                   # 編譯源文件並將日誌重定向到/home/xxx/Python-2.7.14/LOG_make
make install >& LOG_install &        # 安裝並將日誌重定向到/home/xxx/Python-2.7.14/LOG_install
  • 編譯和安裝兩個指令都是放在後臺運行的,可以通過jobs指令查看是否執行完畢,所需時間大概是一共3分鐘左右吧,也不是太久。
  • 重定向編譯和安裝日誌主要是爲了以後查看都裝在了哪些位置,據說可以通過這種方式卸載,畢竟源碼安裝的軟件就是特別麻煩。

4. 軟連接快捷方式到/usr/bin

ln -s /usr/local/python2.7.14/bin/python2 /usr/bin/python2.7

創建軟連接之後,就可以在終端使用交互式python2.7的界面了,而且是不會和系統自帶的python2.6衝突的喲:

[xxx@host ~]$ python2.7
Python 2.7.14 (default, Apr 17 2018, 03:55:27) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-18)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

[xxx@host ~]$ python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

5. 安裝pip2.7

  • 系統自帶的python2.6是自帶了pip2.6的,但是有很多有用的package是會要求python版本>=2.7的
  • python2.7的源碼安裝是沒有自帶pip2.7的,需要自己手動安裝
  • python3的pip版本戳這裏自己選,選好後替換以下代碼中wget後面的鏈接
  • 爲什麼不裝easy_install?因爲我習慣用pip了。。=。=
  • 對於是否使用pip2.7 install --upgrade pip來更新pip2.7,我還沒有定論,不過感覺是不要更新比較好吧(反正第一次更新了pip2.7後來出現了一些安裝錯誤,然後我就重裝系統了,再裝一遍的時候沒更新了,個人服務器就是任性=。=雖然後來驗證似乎是pandas版本依賴numpy版本的問題)
cd /home/user
wget https://bootstrap.pypa.io/get-pip.py
python2.7 get-pip.py
ln -s /usr/local/python2.7.14/bin/pip2.7 /usr/bin/pip2.7
  • 大功告成,可以這樣安裝python2.7的package了:pip2.7 install [package_name],但是!我是不建議這麼幹的,隱約覺得我這麼幹會出事,又要重裝系統就GG了,所以我決定學習一下virtualenv(相關介紹可以戳我的博文python:virtualenv(Centos6.8)

6. 完成安裝後的關鍵路徑列表

  • 自帶的python2.6的可執行文件位置:/usr/bin
  • 自帶的pip2.6的可執行文件位置:/usr/bin
  • 使用自帶的pip2.6安裝的package存放位置:/usr/lib/python2.6/site-packages
  • 源碼安裝的python2.7.14的安裝位置:/usr/local/python2.7.14
  • 源碼安裝的python2.7的可執行文件位置:/usr/local/python2.7.14/bin
  • 源碼安裝的pip2.7的可執行文件位置:/usr/local/python2.7.14/bin
  • 使用源碼安裝的pip2.7安裝的package存放位置:/usr/local/python2.7.14/lib/python2.7

7. 安裝pip2.7時報錯記錄

在執行python2.7 get-pip.py出現以下錯誤

[root@host xxx]# python2.7 get-pip.py 
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Collecting pip
  Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/pip/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/pip/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/pip/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/pip/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)': /simple/pip/
  Could not fetch URL https://pypi.python.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.",)) - skipping
  Could not find a version that satisfies the requirement pip (from versions: )
No matching distribution found for pip

因爲缺少openssl-devel,解決辦法是使用yum指令安裝openssl-devel,然後重新編譯和安裝python2.7,再安裝pip2.7

yum install openssl-devel
cd /home/xxx/Python-2.7.14
make >& LOG_make &
make install >& LOG_install &
cd ..
python2.7 get-pip.py
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章