Linux CentOS安裝Python3.7.3以及糾錯

嘗試在CentOS7上安裝Python3.7,對一個新手來說,還是有挺多東西需要注意的。具體步驟如下:

1、下載

下載python3,wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tgz

解壓到本地目錄,比如現在在/home/user1,會在當前目錄產生一個Python-3.7.3目錄。

tar -xzvf Python-3.7.3.tgz

2、make安裝

進入Python-3.7.3目錄,先configure

./configure --prefix=/usr/local/python3.7.3

成功(此時已經將安裝文件放到/usr/local的目錄了)。

make && make install

麻煩了,出錯了。提示:Module Not Found Error: No module named '_ctypes'

那麼理論上我應該找到_ctypes才行。

查了一下csdn前輩們的足跡,原來3.7版本需要一個新的包libffi-devel,安裝此包之後再次進行編譯安裝即可。這個問題歸屬於python的錯誤31652 https://bugs.python.org/issue31652

#yum install libffi-devel -y
#make install

如果……又很不幸,先把原來的python2給刪除了,恭喜,又中獎了。那麼需要去centos.org上面找rpm包,以rpm方式安裝libffi。這裏不再贅述。當然,你在百度上面libffi centos rpm,就能在rpmfind.NET上找到下載,注意選擇自己的操作系統版本啊。

查了一下這個issue,哇btw,Ubuntu也會出現問題的,這裏有一個18版本的依賴大禮包:

> I expect that the root cause is missing libffi(-dev[el]) on your system

Yes, on my Ubuntu 18.04, `make` failed to compile _ctypes module.
After install libffi-dev, it was compiled successfully:

One more word, full necessary dependencies on my Ubuntu 18.04:
sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev zlib1g-dev libssl-dev openssl libgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-dev libffi-dev uuid-dev

如果libffi安裝到了別的地方……參考以下:

 the reason was that libffi was installed under /opt/local, so the fix was:


./configure LDFLAGS='-L/opt/local/lib -R/opt/local/lib'

3、建立快捷方式(鏈接)

完了麼?沒完。此時,/home/user1/python3.7.3中應該有python可執行程序了,但是系統可能還不知道,在任何一個目錄輸入python時,到make之後的目錄找python程序。如果是系統自帶,我的是python2.7,運行一下python,會告知你這是:2.7.5。或者python --version,可以看到輸出版本號。

再找到軟鏈接。查看python命令在當前系統對應哪一個文件。

>whereis python

python: /usr/bin/python ...

查看這個python對應的是什麼 ls -al /usr/bin/python

/usr/bin/python -> python2

讓我們用一個軟鏈接指向新安裝的python3這裏吧。
 

mv  ./python pythonold

#將原來的python鏈接改名

cp /usr/local/python3.7.3/python3 /usr/bin/python3

#拷貝新的python到bin目錄,這也是一個鏈接文件,指向的是local/python3.7.3下面的python3.7

ln -s ./python3 ./python

#建立鏈接

現在輸入python看到version是3.7.3了。進入python解釋環境之後:
 

>>import time

>>print(time)

<module‘time(built-in)’>

>>import sys

>>print(sys.path)

['', '/usr/local/python3.7.3/lib/........']

4、建立pip

還有一個東西沒裝,pip。在/usr/local/python3.7.3/bin下面可見pip3

ln -s /usr/local/python3.7.3/bin/pip3 /usr/bin/pip

#建立pip到pip3的鏈接

python3.7是沒有安裝numpy的,安裝一個試試:

pip install numpy

如果正常的開始collecting,就沒問題了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章