1. 程式人生 > >環境準備—之—linux下安裝python3和pip3

環境準備—之—linux下安裝python3和pip3

check 技術分享 localhost class 準備 org col edit idl

轉自 上海悠悠 https://www.cnblogs.com/yoyoketang/p/10195102.html

前言

centos7 自帶有 python,但是卻是 python2 版本的 python,如果你想安裝個python3怎麽辦呢?
如果直接刪除python2的話,可能會引起其他的問題,因為有些東西是依賴python2的,最好的解決辦法是python3和python2共存,新安裝一個python3的環境。

python2

[root@bogon ~]# cd /   #先回到根目錄
[root@bogon /]# whereis python   #查看python所在目錄(/usr/bin下)
python: 
/usr/bin/python2.7 /usr/bin/python /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz [root@bogon /]# cd /usr/bin #切到python目錄 [root@bogon bin]# ll python*  #查看python開頭的相關文件詳情 lrwxrwxrwx. 1 root root 7 2月 4 16:28 python -> python2 lrwxrwxrwx. 1 root root 9
2月 4 16:28 python2 -> python2.7 -rwxr-xr-x. 1 root root 7216 4月 11 2018 python2.7 [root@bogon bin]#

從查看的結果可以看到python指向的是python2 ,python2指向的是python2.7。那也就是在控制臺輸入python、python2、python2.7都是運行python2.7

如果我們安裝一個python3.6的環境,讓python指向3.6, python2指向python2.7, 那就可以完美的共存了

安裝python3

安裝python3.6之前,先備份python包,因為一會要替換這個文件

[root@bogon bin]# mv python python.bak  #本步驟,執行的命令
以下為查看結果
[root@bogon bin]# ll python*   #只是查看執行的結果
lrwxrwxrwx. 1 root root    9 2月   4 16:28 python2 -> python2.7
-rwxr-xr-x. 1 root root 7216 4月  11 2018 python2.7
lrwxrwxrwx. 1 root root    7 2月   4 16:28 python.bak -> python2

yum配置

yum是依賴於python2的,所以需要更改yum裏面的python指向,vim打開 /usr/bin/yum

[root@bogon Python-3.6.8]# vim /usr/bin/yum
#! /usr/bin/python修改為#! /usr/bin/python2
打開後輸入鍵盤上i鍵,進入編輯狀態,把第一行#! /usr/bin/python修改為#! /usr/bin/python2

技術分享圖片

編輯完之後,按ESC返回,輸入:wq保存退出

接著vim打開/usr/libexec/urlgrabber-ext-down

[root@bogon Python-3.6.8]# vim /usr/libexec/urlgrabber-ext-down
#! /usr/bin/python 修改為#! /usr/bin/python2

下載安裝包

從python安裝包的歷史版本中https://www.python.org/ftp/python/,找到需要的安裝包,比如我這裏選3.6.8版本

技術分享圖片

從眾多的包裏面找到Python-3.6.8.tgz包,那麽下載地址拼接下就是:https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

技術分享圖片

在Centos 7系統裏面新建一個目錄,用於存放下載的python3安裝包,比如:/usr/local/python3

[root@bogon bin]# mkdir /usr/local/python3

正式下載

cd到 /usr/local/python3目錄,用wget下載3.6.8安裝包

[root@bogon python3]# wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
以下為下載過程:100%為下載完成
--2019-02-05 22:16:30--  https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz
正在解析主機 www.python.org (www.python.org)... 151.101.24.223, 2a04:4e42:2e::223
正在連接 www.python.org (www.python.org)|151.101.24.223|:443... 已連接。
已發出 HTTP 請求,正在等待回應... 200 OK
長度:23010188 (22M) [application/octet-stream]
正在保存至: “Python-3.6.8.tgz”

100%[=========================================================================>] 23,010,188  2.08MB/s 用時 76s    

2019-02-05 22:17:47 (297 KB/s) - 已保存 “Python-3.6.8.tgz” [23010188/23010188])

        wget命令使用請查看:https://www.cnblogs.com/cindy-cindy/p/6847502.html----------這與安裝無關

等待下載完成之後會在當前目錄下出現一個tgz包,tar命令解壓這個包到當前目錄就可以

[root@bogon python3]# tar -xvf Python-3.6.8.tgz
解壓完成後,會多一個
[root@bogon python3]# ll
總用量 22476
drwxr-xr-x. 17  501  501     4096 12月 24 11:01 Python-3.6.8
-rw-r--r--.  1 root root 23010188 12月 24 11:01 Python-3.6.8.tgz

解壓完之後需要編譯Python-3.6.8包下的文件,先cd過去執行完這句命令之後,把python的安裝目錄指定一下,這樣的話,裏面的一些bin目錄、lib目錄就都會存放在這個目錄下面。
如果不指定這個安裝目錄的話,最後python的安裝文件將分散到linux的默認目錄,不在一塊。我們指定安裝目錄,以後卸載的話直接刪除目錄就可以幹凈卸載了。

[root@bogon python3]# cd Python-3.6.8
[root@bogon Python-3.6.8]# ./configure --prefix=/usr/local/python3Dir

          在此處被坑不知道使用這個命令會如何 ./configure --prefix=/usr/local/python3Dir --with-ssl

又是不行,報錯

#不報錯的話沒有這些
[root@bogon Python-3.6.8]# ./configure --prefix=/usr/local/python3Dir checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking for python3.6... no checking for python3... no checking for python... no checking for --enable-universalsdk... no checking for --with-universal-archs... no checking MACHDEP... linux checking for --without-gcc... no checking for --with-icc... no checking for gcc... no checking for cc... no checking for cl.exe... no configure: error: in `/usr/local/python3/Python-3.6.8‘: configure: error: no acceptable C compiler found in $PATH See `config.log for more details [root@bogon Python-3.6.8]# cd .. [root@bogon python3]# ./configure --prefix=/usr/local/python3Dir -bash: ./configure: 沒有那個文件或目錄

        經百度,查看是缺少gcc插件,需要執行 yum install gcc命令, 問題詳見 https://blog.csdn.net/duguduchong/article/details/8699774

接著之前的搞,在當前目錄/usr/local/python3/Python-3.6.8執行make,執行完之後,接著輸入make install

[root@bogon Python-3.6.8]# make  # 執行時間還挺長的
[root@bogon Python-3.6.8]# make install  #執行這個命令之後出現 python3Dir 目錄
Traceback (most recent call last):
File "/usr/local/python3/Python-3.6.8/Lib/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/local/python3/Python-3.6.8/Lib/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__main__.py", line 5, in <module>
sys.exit(ensurepip._main())
File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__init__.py", line 204, in _main
default_pip=args.default_pip,
File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__init__.py", line 117, in _bootstrap
return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "/usr/local/python3/Python-3.6.8/Lib/ensurepip/__init__.py", line 27, in _run_pip
import pip._internal
zipimport.ZipImportError: can‘t decompress data; zlib not available #-------不曉得這個錯誤有沒有影響,zipimport。ZipImportError:無法解壓數據;zlib不可用
make: *** [install] 錯誤 1
[root@bogon Python-3.6.8]#  #看樣子是pip的問題,

       缺少zlib依賴包,請看這裏 https://blog.csdn.net/u014749862/article/details/54430022/

正常 make install 截圖

技術分享圖片

執行完畢之後,我們就可以切換到 /usr/local/python3Dir 目錄下去查看,python3.6在bin目錄

[root@bogon Python-3.6.8]# cd /usr/local/python3Dir
[root@bogon python3Dir]# ls 
bin  include  lib  share
[root@bogon python3Dir]# cd bin
[root@bogon bin]# ls
2to3      idle3    pydoc3    python3    python3.6-config  python3.6m-config  pyvenv
2to3-3.6  idle3.6  pydoc3.6  python3.6  python3.6m        python3-config     pyvenv-3.6

添加軟鏈接

由於系統默認的python是指向python2,前面已經刪除備份過了,這裏執行把新安裝的python3.6指向給/usr/bin/pythonn就可以了

[root@bogon bin]# ln -s /usr/local/python3Dir/bin/python3 /usr/bin/python
[root@bogon bin]# python -V
Python 3.6.8
[root@bogon bin]# python
Python 3.6.8 (default, Feb  5 2019, 22:52:11) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

#輸入python -V可以看到版本號,這樣系統默認的就是python3.6.8版本了,如果想用python2.7版本,直接輸入python2就可以了
[root@bogon bin]# python2
Python 2.7.5 (default, Apr 11 2018, 07:36:10) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
[1]+  已停止               python2

pip環境

python3安裝完成之後,如果想用pip安裝一些第三方包,系統會默認安裝到python2的環境裏面。為了能夠使用pip安裝到python3的環境,可以下載pip安裝包,添加軟鏈接。

  • 先cd到/usr/bin
  • mv備份pip
  • 添加python3Dir安裝目錄裏面的pip3軟鏈接
  • 查看pip -V 和pip2 -V
  • 查看所有的pip
[root@bogon bin]# pip
bash: pip: 未找到命令...
[root@bogon bin]# whereis pip
pip:[root@bogon bin]# 
[root@bogon bin]# 
[root@bogon bin]# cd /usr/bin
[root@bogon bin]# pwd
/usr/bin
[root@bogon bin]# ll pip*
ls: 無法訪問pip*: 沒有那個文件或目錄
[root@bogon bin]# ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip   #這裏直接執行這個即可
[root@bogon bin]# ll pip*
lrwxrwxrwx. 1 root root 27 2月   5 23:09 pip -> /usr/local/python3/bin/pip3

我這裏並沒有pip的命令,故直接執行了這一個命令即可

ln -s /usr/local/python3Dir/bin/pip3 /usr/bin/pip

(本次嘗試失敗,應該就是上面安裝的時候報錯的原因,暫時先這樣了)

問題解決

1.解決了上面的zlib問題, pip已經安裝成功,可是一波剛平,一波又起風雲,如下圖

技術分享圖片

技術分享圖片

暫時以這兩篇文章,為準吧, ./configure --prefix=/usr/local/python3Dir --with-ssl

https://blog.csdn.net/zhengcaihua0/article/details/79681991 主要以這個為準,

1. 查看openssl安裝包,發現缺少openssl-devel包 
[root@localhost ~]# rpm -aq|grep openssl 
openssl-0.9.8e-20.el5 
openssl-0.9.8e-20.el5 
[root@localhost ~]#

2.yum安裝openssl-devel 
[root@localhost ~]# yum install openssl-devel -y 
查看安裝結果 
[root@localhost ~]# rpm -aq|grep openssl 
openssl-0.9.8e-26.el5_9.1 
openssl-0.9.8e-26.el5_9.1 
openssl-devel-0.9.8e-26.el5_9.1 
openssl-devel-0.9.8e-26.el5_9.1

3.重新對python3.6進行編譯安裝,用一下過程來實現編譯安裝:

cd Python-3.6.4
./configure --with-ssl
make
sudo make install 

技術分享圖片

不在報錯,那就ok了

https://blog.csdn.net/jeryjeryjery/article/details/77880227 這個作為了解吧

環境準備—之—linux下安裝python3和pip3