AC手環 關注python
2018.03.16 09:22 字數 2791 閱讀 37732評論 4喜歡 49web
參考文章:windows
不少學習python的初學者甚至學了有一段時間的人接觸到anaconda或者其餘虛擬環境工具時以爲無從下手, 其主要緣由就是不明白這些工具究竟有什麼用, 是用來作什麼的, 爲何要這麼作, 好比筆者一開始也是不明白爲啥除了python以外我還須要這麼一個東西, 他和python到底有啥聯繫和區別, 爲啥能用來管理python.安全
在使用過以後我才逐漸發現其實anaconda等環境管理工具究竟在作啥, 以及爲何咱們須要他們來管理咱們的python環境異步
首先咱們須要先去了解Anaconda誕生的目的.再去了解Anaconda的使用方法.函數
首先咱們須要從python自己提及, 從根源尋找問題, 咱們在使用python語言編寫程序以前須要下載一個python解釋器, 這纔是python的本體, 沒了python解釋器, 咱們即便寫了無比正確優雅的python腳本也沒辦法運行, 那這個解釋器在哪呢.就在你安裝python的地方,好比個人在C:\Users\Acring\AppData\Local\Programs\Python\Python36-32
工具
image.png學習
項目結構如上圖,這裏有咱們很熟悉的python.exe, 也就是Python解釋器編碼
除此以外還有個很重要的東西, Lib, 也就是python包文件, 包括自帶的包和第三方包spa
Lib文件夾
\
Lib目錄如上圖, 這裏有python自帶的包, 如筆者經常使用的日誌包logging, 異步包 concurrent, 而全部的第三方包都放在site-packages文件夾裏面
瞭解了這些咱們就對整個python環境有了大概的瞭解, 其實最關鍵的, 一個python環境中須要有一個解釋器, 和一個包集合.
解釋器根據python的版本大概分爲2和3. python2和3之間沒法互相兼容, 也就是說用python2語法寫出來的腳本不必定能在python3的解釋器中運行.
包集合中包含了自帶的包和第三方包, 第三方包咱們通常經過pip或者easy_install來下載, 當一個python環境中不包含這個包, 那麼引用了這個包的程序不能在該python環境中運行.
好比說一個爬蟲腳本用到了第三方的requests包,而另外一臺計算機是剛剛裝好原始python的, 也就是說根本沒有任何第三方包, 那麼這個爬蟲腳本是沒法在另外一臺機器上運行的.
python環境解釋完了, 那麼接下來就要說明這樣的環境究竟產生哪些問題, 由於anaconda正式爲了解決這些問題而誕生的
python2和python3在語法上是不兼容的, 那個人機器上應該裝python2仍是python3呢, 可能一開始選一個學習就行了, 可是若是你要開發的程序必須使用python2而不能使用python3,那這時候你就不得再也不下載一個python2, 那這時候環境變量該設誰的目錄呢, 若是仍是切換環境變量豈不是很麻煩.
若是我在本地只有一個python環境那我全部程序用到的各類包都只能放到同一個環境中, 致使環境混亂, 另外當我將寫好的程序放到另外一電腦上運行時又會遇到缺乏相關包, 須要本身手動一個個下載的狀況, 實在是煩人, 要是能每一個程序開發都選用不一樣的環境, 而開發好以後又能將該程序須要的環境(第三方包)都獨立打包出來就行了.
那麼接下來就到咱們的anaconda上場了, 先讓咱們安裝好Anaconda而後我再來告訴你如何用Anaconda一個個解決咱們上面的問題吧.
推薦下載python3版本, 畢竟將來python2是要中止維護的.
按照安裝程序提示一步步安裝就行了, 安裝完成以後會多幾個應用
- Anaconda Navigtor :用於管理工具包和環境的圖形用戶界面,後續涉及的衆多管理命令也能夠在 Navigator 中手工實現。
- Jupyter notebook :基於web的交互式計算環境,能夠編輯易於人們閱讀的文檔,用於展現數據分析的過程。
- qtconsole :一個可執行 IPython 的仿終端圖形界面程序,相比 Python Shell 界面,qtconsole 能夠直接顯示代碼生成的圖形,實現多行代碼輸入執行,以及內置許多有用的功能和函數。
- spyder :一個使用Python語言、跨平臺的、科學運算集成開發環境。
暫時先不用管, 瞭解一下就好了
若是是windows的話須要去 控制面板\系統和安全\系統\高級系統設置\環境變量\用戶變量\PATH
中添加 anaconda的安裝目錄的Scripts文件夾, 好比個人路徑是D:\Software\Anaconda\Scripts
, 看我的安裝路徑不一樣須要本身調整.
以後就能夠打開命令行(最好用管理員模式打開) 輸入 conda --version
若是輸出conda 4.4.11
之類的就說明環境變量設置成功了.
爲了不可能發生的錯誤, 咱們在命令行輸入conda upgrade --all
先把全部工具包進行升級
接下來咱們就能夠用anaconda來建立咱們一個個獨立的python環境了.接下來的例子都是在命令行操做的,請打開你的命令行吧.
activate 能將咱們引入anaconda設定的虛擬環境中, 若是你後面什麼參數都不加那麼會進入anaconda自帶的base環境,
你能夠輸入python試試, 這樣會進入base環境的python解釋器, 若是你把原來環境中的python環境去除掉會更能體會到, 這個時候在命令行中使用的已經不是你原來的python而是base環境下的python.而命令行前面也會多一個(base)
說明當前咱們處於的是base環境下.
activate
咱們固然不知足一個base環境, 咱們應該爲本身的程序安裝單獨的虛擬環境.
建立一個名稱爲learn的虛擬環境並指定python版本爲3(這裏conda會自動找3中最新的版本下載)
conda create -n learn python=3
image.png
因而咱們就有了一個learn的虛擬環境, 接下來咱們切換到這個環境, 同樣仍是用activae命令 後面加上要切換的環境名稱
activate learn
若是忘記了名稱咱們能夠先用
conda env list
去查看全部的環境
如今的learn環境除了python自帶的一些官方包以外是沒有其餘包的, 一個比較乾淨的環境咱們能夠試試
先輸入python
打開python解釋器而後輸入
>>> import requests
會報錯找不到requests包, 很正常.接下來咱們就要演示如何去安裝requests包
exit()
退出python解釋器
輸入
conda install requests
或者
pip install requests
來安裝requests包.
安裝完成以後咱們再輸入python
進入解釋器並import requests包, 此次必定就是成功的了.
那麼怎麼卸載一個包呢
conda remove requests
或者
pip uninstall requests
就行啦.
要查看當前環境中全部安裝了的包能夠用
conda list
若是想要導出當前環境的包信息能夠用
conda env export > environment.yaml
將包信息存入yaml文件中.
當須要從新建立一個相同的虛擬環境時能夠用
conda env create -f environment.yaml
其實命令很簡單對不對, 我把一些經常使用的在下面給出來, 相信本身多打兩次就能記住
activate // 切換到base環境
activate learn // 切換到learn環境
conda create -n learn python=3 // 建立一個名爲learn的環境並指定python版本爲3(的最新版本)
conda env list // 列出conda管理的全部環境
conda list // 列出當前環境的全部包
conda install requests 安裝requests包
conda remove requests 卸載requets包
conda remove -n learn --all // 刪除learn環境及下屬全部包
conda update requests 更新requests包
conda env export > environment.yaml // 導出當前環境的包信息
conda env create -f environment.yaml // 用配置文件建立新的虛擬環境
或許你會以爲奇怪爲啥anaconda能作這些事, 他的原理究竟是什麼, 咱們來看看anaconda的安裝目錄
image.png
這裏只截取了一部分, 可是咱們和本文章最開頭的python環境目錄比較一下, 能夠發現其實十分的類似, 其實這裏就是base環境. 裏面有着一個基本的python解釋器, lLib裏面也有base環境下的各類包文件.
那咱們本身建立的環境去哪了呢, 咱們能夠看見一個envs, 這裏就是咱們本身建立的各類虛擬環境的入口, 點進去看看
image.png
能夠發現咱們以前建立的learn目錄就在下面, 再點進去
image.png
這不就是一個標準的python環境目錄嗎?
這麼一看, anaconda所謂的建立虛擬環境其實就是安裝了一個真實的python環境, 只不過咱們能夠經過activate,conda等命令去隨意的切換咱們當前的python環境, 用不一樣版本的解釋器和不一樣的包環境去運行python腳本.
在工做環境中咱們會集成開發環境去編碼, 這裏推薦JB公司的pycharm, 而pycharm也能很方便的和anaconda的虛擬環境結合
在Setting => Project => Project Interpreter
裏面修改 Project Interpreter , 點擊齒輪標誌再點擊Add Local爲你某個環境的python.exe解釋器就好了
image.png
好比你要在learn環境中編寫程序, 那麼就修改成D:\Software\Anaconda\envs\learn
, 能夠看到這時候下面的依賴包也變成了learn環境中的包了.接下來咱們就能夠在pycharm中愉快的編碼了.
image.png
如今你是否是發現用上anaconda就能夠十分優雅簡單的解決上面所說起的單個python環境所帶來的弊端了呢, 並且也明白了其實這一切的實現並無那麼神奇.
固然anaconda除了包管理以外還在於其豐富數據分析包, 不過那就是另外一個內容了, 咱們先學會用anaconda去換一種方法管裏本身的開發環境, 這已是一個很大的進步了.