在centos上部署Python以前,咱們須要先配置開發環境。python
1.安裝Python依賴的開發工具包linux
gcc天然少不了,能夠直接用「Development Tools」:git
yum grouplist #查看可安裝的包 yum groupinstall "Development tools" #含有空格用引號括起來 whereis gcc #查看gcc安裝位置 gcc --version #查看gcc安裝版本
還有其餘一些依賴包github
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.6sql
查看安裝的Python信息:centos
python -V
而後查看一下Python可執行文件的位置:服務器
which python
#輸出:/usr/bin/python
進入到bin目錄,查看python文件:python2.7
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/python三、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