https://www.waitalone.cn/anaconda-install-error.html
1、Anaconda概述
Anaconda是一個用於科學計算的Python發行版,支持 Linux, Mac, Windows系統,提供了包管理與環境管理的功能,可以很方便地解決多版本python並存、切換以及各種第三方包安裝問題。Anaconda利用工具/命令conda來進行package和environment的管理,並且已經包含了Python和相關的配套工具。
這里先解釋下conda、anaconda這些概念的差別。
conda可以理解為一個工具,也是一個可執行命令,其核心功能是包管理與環境管理。
包管理與pip的使用類似,環境管理則允許用戶方便地安裝不同版本的python並可以快速切換。
Anaconda則是一個打包的集合,里面預裝好了conda、某個版本的python、眾多packages、科學計算工具等等,所以也稱為Python的一種發行版。
其實還有Miniconda,顧名思義,它只包含最基本的內容——python與conda,以及相關的必須依賴項,對於空間要求嚴格的用戶,Miniconda是一種選擇。
進入下文之前,說明一下conda的設計理念——conda將幾乎所有的工具、第三方包都當做package對待,甚至包括python和conda自身!因此,conda打破了包管理與環境管理的約束,能非常方便地安裝各種版本python、各種package並方便地切換。
2、Anaconda的安裝
Anaconda的下載頁參見官網下載,Linux、Mac、Windows均支持。
安裝時,會發現有兩個不同版本的Anaconda,分別對應Python 2.7和Python 3.5,兩個版本其實除了這點區別外其他都一樣。后面我們會看到,安裝哪個版本並不本質,因為通過環境管理,我們可以很方便地切換運行時的Python版本。(由於我常用的Python是2.7和3.4,因此傾向於直接安裝Python 2.7對應的Anaconda)
這里我安裝miniconda,下載地址如下:
https://conda.io/miniconda.html
2.1 安裝報錯編碼錯誤處理
出現這個窗口以后,不要點確定,然后進入到anaconda安裝文件夾,一般是C:\ProgramData\Anaconda2,如果你提示的錯誤是:UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-4 blabla,那么進入Lib文件夾,用編輯器打開_nsis.py,在import sys下面加上這兩句:
1 |
reload (sys) |
2 |
sys.setdefaultencoding( "utf-8" ) |
然后點確定,再點重試即可安裝完成。
3、Anaconda的使用
3.1 管理包
conda 是一種只能通過命令行來使用的程序。類似於pip那樣可以對Python庫的包進行管理。
安裝命令:
01 |
# 安裝命令 |
02 |
conda install package_name |
03 |
# 安裝numpy,輸入 |
04 |
conda install numpy |
05 |
# 安裝 matplotlib |
06 |
conda install matplotlib |
07 |
# 查看已安裝的包 |
08 |
conda list |
09 |
# 搜索安裝包 |
10 |
conda search search_term |
11 |
# 同時安裝多個包 |
12 |
conda install numpy scipy pandas |
13 |
# 安裝指定版本的包 |
14 |
conda install numpy=1.11 |
15 |
# 卸載包 |
16 |
conda remove package_name |
17 |
# 更新包 |
18 |
conda update package_name |
19 |
# 更新環境中的所有包 |
20 |
conda update --all |
加速conda下載速度,使用國內鏡像源:
1 |
conda config --add channels https: //mirrors .tuna.tsinghua.edu.cn /anaconda/pkgs/free/ |
2 |
conda config --add channels https: //mirrors .tuna.tsinghua.edu.cn /anaconda/pkgs/main/ |
3 |
conda config -- set show_channel_urls yes |
3.2 管理環境
除了管理包之外,conda 還是虛擬環境管理器。它類似於另外兩個很流行的環境管理器,即 virtualenv 和 pyenv。
環境可以分隔不同項目的包。因為我們使用的時候會依賴於某個庫的不同版本的代碼或在py2和py3之間進行切換。
也可以將環境中的包的列表導出為文件,然后將該文件與代碼包括在一起。這能讓其他人輕松加載代碼的所有依賴項。
pip 提供了類似的功能,即 pip freeze > requirements.txt
創建環境:
conda create -n env_name list of packages,
-n env_name 設置環境的名稱(-n 是指名稱),
而 list of packages 是要安裝在環境中的包的列表。
創建環境時,可以指定要安裝在環境中的 Python 版本。
conda create -n py3 python=3 或 conda create -n py2 python=2 。
要安裝特定版本(例如 Python 3.3),請使用 conda create -n py python=3.3。
01 |
# 基於 python3.6 創建一個名為test_py3 的環境 |
02 |
conda create --name test_py3 python=3.6 |
03 |
04 |
# 基於 python2.7 創建一個名為test_py2 的環境 |
05 |
conda create --name test_py2 python=2.7 |
06 |
07 |
# 激活 test 環境 |
08 |
activate test_py2 # windows |
09 |
source activate test_py2 # linux/mac |
10 |
11 |
# 切換到python3 |
12 |
activate test_py3 |
3.3 進入環境
創建了環境后,在 OSX/Linux 上使用 source activate my_env 進入環境。在 Windows 上,請使用 activate my_env。
要離開環境,請鍵入 source deactivate(在 OSX/Linux 上)。在 Windows 上,請使用 deactivate。
3.4 保存和加載環境
共享環境這項功能確實很有用,它能讓其他人安裝你的代碼中使用的所有包,並確保這些包的版本正確。可以使用
conda env export > environment.yaml
將包保存為 YAML。
第一部分 conda env export 寫出環境中的所有包(包括 Python 版本)。
第二部分 > environment.yaml 將導出的文本寫入到 YAML 文件 environment.yaml 中。現在可以共享此文件,而且其他人能夠創建和你用於項目相同的環境。
要通過環境文件創建環境,請使用 conda env create -f environment.yaml。這會創建一個新環境,而且它具有在 environment.yaml 中列出的同一庫。
3.5 列出環境
如果忘記了環境的名稱,可以使用 conda env list 或conda info -e列出你創建的所有環境。你會看到環境的列表,而且你當前所在環境的旁邊會有一個星號。默認的環境(即當你不在環境中時使用的環境)名為 root。
3.6 刪除環境
不再使用某些環境,可以使用 conda env remove -n env_name 刪除指定的環境(在這里名為 env_name)。
3.7 共享環境
在 GitHub 上共享代碼時,最好同樣創建環境文件並將其包括在代碼庫中。這能讓其他人更輕松地安裝你的代碼的所有依賴項。對於不使用 conda 的人,我通常還會使用 pip freeze(在此處了解詳情)將一個 pip requirements.txt 文件包括在內。
pip freeze > requirements.txt
pip install -r requirements.txt
4、錯誤處理
安裝好以后,正常安裝django,發現在創建項目的時候會報編碼 錯誤,"UnicodeDecodeError: 'ascii' codec can't decode"
解決辦法:
在anaconda的安裝路徑下找到Lib/mimetypes.py,在import sys之后加入如下代碼
1 |
if sys.getdefaultencoding() != 'gbk' : |
2 |
reload(sys) |
3 |
sys.setdefaultencoding( 'gbk' ) |
參考網址:
https://www.zhihu.com/question/42263480
http://python.jobbole.com/86236/
https://foofish.net/compatible-py2-and-py3.html
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/