Python 多版本共存問題 1
Python 3 和 Python 2 ?
? 自從 Python 發布新的版本 3 以來,就一直是開發者心中的一個糾結。由于 Python 3 并不完全兼容 Python 2的語法,這導致大量的Python 2時代的優秀module在Python 3中無法使用,這些module的開發者自身也感到并沒有令人特別激動的理由讓自己用Python 3來對module進行重寫,這導致大家都繼續集體停留在Python 2的樂園里。
? 另一方面,Python 3在世界上還是有諸多擁躉,新開發出來的module大多數都是采用 Python 3規范進行編寫,例如 tensorflow,numpy 等都發布Python 2和3兩種版本。
? 除此之外,Python 2內部也有 2.5, 2.7等版本,Python 3內部也有 3.4, 3.5等版本。
多版本共存的剛需
? 由于開發任務的不同,例如hedes可能需要采用Python 3的某個爬蟲庫,用以采集網絡文本數據,然后利用tensorflow來開發深度學習的文本情感分類算法。那么此時張三就需要調用Python 3版本下的多個庫,而目前張三的Ubuntu 服務器上只有Python 2.7,因此他需要安裝python 3并安裝對應的python 3 module
Ubuntu 14.04 安裝Python 3
? hedes的服務器是聯想的P900 工作站,安裝的系統是Ubuntu 14.04,顯卡是NV-Titan-X。
? Ubuntu 14.04 系統已經原生安裝了 Python 2.7
-
安裝 Python 3
? Python 3 采用 apt-get 默認安裝到 /usr/bin/python3
sudo apt-get install python3#目前系統上默認安裝 Python 3.4
-
安裝 Python 3.4 or 3.5
-
Python 3.4 采用 apt-get 默認安裝到 /usr/bin/python3.4
sudo apt-get install python3.4
-
Python 3.5 采用 apt-get 默認安裝到 /usr/bin/python3.5
# 添加 ppa sudo add-apt-repository ppa:fkrull/deadsnakes sudo apt-get update sudo apt-get install python3.5
-
-
安裝 Python 3的庫
-
采用 apt-get 方式的安裝
-
安裝 Python 3的庫(以numpy為例),安裝位置是 /usr/lib/python3/dist-packages/
sudo apt-get install python3-numpy
-
安裝 Python 3.4的庫
- 因為其實目前無法安裝 python3.4-numpy 或者 python3.5-numpy,我估計是因為目前的python3-numpy 包對Python 3的任意版本都是通用
- 如果要安裝 python3.4-name1 的庫,那么安裝的位置是 /usr/lib/python3.4/dist-packages
-
-
采用 pip 的方式安裝
-
安裝 Python 3的庫(以 numpy 為例),安裝位置是 /usr/local/lib/python3/dist-packages
# 采用 pip3 進行安裝之前,先安裝 python3.4-dev sudo apt-get install python3.4-dev # 如果之前已經通過 apt-get 安裝過了 python3-numpy,那么這里將不會對 numpy 進行安裝 sudo pip3 install numpy # 值得注意的是,如果先用 pip3 安裝了numpy,那么 python3-numpy 還是可以用 apt-get 進行安裝...,但是Python 2中就不是這樣,如果已經用pip 安裝過了 numpy,那么 python-numpy 就不會被安裝...anyway,總之是裝上了模塊了
-
查看 module 的位置
# python3.4 import numpy as np print(np.__path__)
-
欲采用 pip 安裝 Python 3.4 or Python 3.5 的庫,則需要用到 virtualenv 命令,在獨立環境中用 pip 進行安裝,詳細參照本文的下一篇
-
-
Shell 中調用Python 的不同版本
? 假設我們將 Python 每種版本對應的 module 都采用 pip2 or pip3進行安裝,那么我們可以采用如下的方式來調用 Python 2 和 Python 3
-
小貼士
# 查看 Python 這個可執行程序的位置 which python # 查看 Python 這個文件名或文件夾名在系統中出現的位置 # locate 跟 find 不同,find 是直接硬查找,而locate 是查詢系統中的數據庫來快速定位相關 name 出現的位置 locate python
-
shell 中調用 Python 2
# 以下三種方式都可以調用 Python 2.7 python python2 python2.7
-
shell 中調用 Python 3
# 前兩種方式調用的是 Python 3.4 python3 python3.4 # 該種方式調用的是 Python 3.5 python3.5
進入 Python 的解釋器后,就可以 import 各種module了,只要這個模塊存在于對應Python 版本的lib中