在工作中不同項目對Python的版本有著不同的要求,Python2與Python3的差異,是的很多時候我們要同時使用者兩種環(huán)境來做對比。眾所周知,ipython的交互性設計能帶來很大的方便。最理想的狀態(tài)下就是能夠隨時切換Python的版本,且Python2與Python3能夠并存,并且都能擁有自己的ipython和自己的pip包管理工具。
對于mac電腦來說,會自帶Python2,該Python在/usr/bin/python,這個Python可以使用,安裝插件,但無法刪除。mac的很多功能都依賴與Python,因此,不建議對這個Python進行修改,安裝包等操作。如果一不小心,出現(xiàn)問題,系統(tǒng)就會崩潰。
對于已經(jīng)從Python官網(wǎng)上下載并安裝的情況,最好把這個Python進行刪除。
刪除Python官網(wǎng)下載的Python
1 刪除Python框架
2 sudo rm -rf /Library/Frameworks/Python.framework/Versions/x.x
3 刪除Python程序
4 sudo rm -rf “/Applications/Python x.x”
5 刪除/usr/local/bin目錄下的Python連接
x.x為Python的版本號
mac自帶Python安裝pip
mac自帶的Python是沒有安裝pip的,已不建議安裝。如果需要安裝,
mac里面Python自帶easy_install的,最快的應該就是在terminal里面執(zhí)行sudo easy_install pip,網(wǎng)絡好幾秒就ok。運行完可以用pip help測試一下是否安裝成功,成功安裝后,直接pip install numpy或者其他包就可以了。
pyenv(最正規(guī)的好用的多版本管理工具)
參考
這個pyenv會管理不同版本的Python,可以隨時切換全局的Python版本,可以Python2與Python3并存,并且能夠指定項目的Python版本。
-
安裝pyenv
$ brew install pyenv -
添加到環(huán)境變量
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc如果用的是bash,則將
.zshrc修改為.bashrc -
應用zsh(bash)設置
$ source ~/.zshrc $ exec $SHELL -l # 輸入命令重啟 Shell,然后就可以重啟pyenv -
安裝python
$ pyenv install 3.6.0 # 安裝3.6.0版本 -
重建索引
$ pyenv rehash -
設置全局pyhon版本
$ pyenv global 2.7.13 3.6.0 -
指定項目python版本
$ pyenv local 3.5.2
裝好后,如需使用python3的pip,則使用pip3,使用python2的pip,則使用pip或pip2.ipython同理。
pyenv管理的python位于
~/.pyenv/versions/中,并且全都在~/.pyenv/shims/中以軟連接的形式存在,因此,無論版本怎么切換,which python的結果都應該是~/.pyenv/shims/ipython
其他命令
$ pyenv version # 查看當前生效python版本
$ pyenv versions # 查看已安裝版本
$ pyenv install list # 查看可用版本
安裝常見問題
- 安裝時出現(xiàn)
zipimport.ZipImportError: can't decompress data; zlib not available錯誤官方的解釋
解決方法1:
$ brew install readline xz
$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include"
解決方法2:
1、安裝依賴zlib、zlib-devel
2、重新編譯安裝Python
1 ./configure
2 編輯Modules/Setup文件
3 找到下面這句,去掉注釋
4 #zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
5 重新編譯安裝:make & make install
sublime支持python3直接運行并顯示中文
新建編譯環(huán)境,輸入以下內容
{
"cmd": ["$ which python3 的路徑", "-u", "$file"],
"env": { "PYTHONIOENCODING": "utf8" } # 使Python3支持中文
}
選擇新建的編譯環(huán)境進行編譯。