centos部署Python環境


在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

      


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM