Anaconda,虛擬環境,環境變量, Conda, pip ,Anaconda prompt,cmd,pycharm的作用及其關係

引言:安裝python可以看到很多教程都提到用Anaconda,而且有時還可以看見安裝Conda的,他們有什麼區別?安裝時還要設置環境變量,環境變量是什麼,作用是什麼?使用Anaconda時(Anaconda3版本應該是最新的),有的教程要求我們新建一個虛擬環境,虛擬環境是什麼?這個環境和Anaconda的環境又有什麼區別?安裝包的方式有conda install xxx或者pip install xxx,這兩種方式一樣嗎? 如果想看虛擬環境中安裝了哪些包,可以執行conda list指令,那它是在誰下面執行,是在python下還是虛擬環境下?本人在使用python時,發現python與C的不同之處,遇到以上問題並解決,現在記錄下來回憶加深理解,如果能幫助到別人就更好了。有些問題我並未深究,可能是合情推理,若有錯誤請理解,如果能回覆讓我修改便不勝感激了。【本文只是爲理清安裝使用過程中涉及到的各個概念的含義及其作用,無具體安裝過程】

一. 安裝Python需要什麼(安裝python麻煩的原因)

        一般的語言都需要一個IDE(集成開發環境)來解釋它,最後變成二進制代碼去執行,就像C的Devc++和Visual Studio一樣。Python有一個好用的IDE叫pycharm(可以免費試用)。但是直接安裝pycharm新建python項目會提示“interpreter field is empty”,就是沒有解釋器。【解釋一下:C語言是編譯型語言,要編譯後成二進制代碼計算機纔可以執行。python是解釋型語言,要用解釋器解釋爲二進制代碼計算機纔可以執行。因爲C語言的IDE如Devc++裏面自帶編譯器,所以沒這問題。但是pycharm沒有自帶解釋器,所以要自己另外下載】。Python.exe就是我們需要下載的python解釋器文件。那爲了下載這個Python.exe文件及其依賴包,就需要去官網下載,或者用Anaconda。

二. Anaconda,Miniconda和Conda

       搜一下就可知道,Anaconda指的是一個開源的Python發行版本,是一個開源的Python包管理器,其包含了conda、Python等180多個科學包及其依賴項。Anaconda較大(因爲包很多),Miniconda是個較小的發行版(僅包含conda和 Python)。Conda 是一個開源的軟件包管理系統和環境管理系統。個人理解,就是要通過Anaconda或者Miniconda來使用python,而Conda是管理python的工具,Anaconda和Miniconda都有了Conda。且Anaconda裏面已經包括了很多包,比如矩陣計算需要的庫numpy,這樣就方便不少,不用下載很多包了。如果只下載Miniconda,要用其他包的話就需要另外下載。下載常見指令是conda install xxx或者pip install xxx(xxx指包的名稱,如numpy,具體怎麼運行見第五點),它們處理方式細節我並未深究,一般情況下都可以下載包。【注意:要使用pip指令,可能需要安裝pip,可以看出pip和conda既是包或者管理系統的名稱,又是其指令的開頭,比如pip包含pip install xxx等指令 。顯然,Anaconda包括了pip,不需要另行安裝,Miniconda應該需要另外安裝(我推理的)】。

三. Anaconda&虛擬環境

       如果爲了方便,可以直接下載Anaconda。前面說過,Anaconda是一個包管理器。包含有一個虛擬環境,那虛擬環境是什麼?就是要運行python命令,就需要解釋器Python.exe解釋它。要想在代碼裏import numpy,就需要numpy的包,然後肯定還需要鏈接庫啊其他什麼的。這些東西就構成了一個虛擬環境【嘮叨一下,剛開始學可能對虛擬這個詞覺得奇怪,計算機嘛用虛擬很正常的,就像內存的實地址和虛地址,虛實地址之間有一層映射,你看到地址實際是虛地址。那推理一下這裏的虛擬環境就是我們“看到的”環境,如果不是專業領域,那就用就行了呀,管它有沒有“真實環境”】。現在先說說虛擬環境的作用。運行python程序,肯定需要一個虛擬環境。以下以我的演示爲例:【注意,QQ是用戶名,不是騰訊QQ的意思,你的電腦設置是啥就是啥

       conda env list的意思是顯示所有虛擬環境。可見我有一個根環境“root”(好像有的人叫base)。另外我還創建了名爲“MaskRCNN”和“tensorflow-gpu”的虛擬環境。之前我們不是說Anaconda自帶了很多科學包嗎,說的就是“root”這個虛擬環境帶有的包。我們如果想要新建一個虛擬環境,需要在新的環境裏面重新下載包,他們是不互通的。下圖爲我在pycharm下運行一個python程序前選擇我所需的環境,可以看到tensorflow-gpu的虛擬環境的包很少而root的包很多(我沒截完,反正就是很多了)。

                                                                                          root的虛擬環境

                                                                                    tensorflow-gpu的虛擬環境

       從上面可以看到,root虛擬環境的解釋器python.exe就在Anaconda3文件夾下,而另外兩個在envs文件夾下對應的文件夾裏。 【如果要問我爲什麼要分這麼多,誰都用一個包含全部依賴包的root虛擬環境不就好了,幹嘛搞這麼麻煩,其實有一些場合,比如你以前用python2.7寫過一個項目,現在都更新用3.6了,如果Anaconda只能用一個環境,那以前的項目就開不了了,所以要分環境,不同項目的需求可能不同】。

四. 環境變量

       安裝Anaconda時需要設置環境變量,環境變量是什麼?我自己的理解如下,環境變量就是某些特定的文件路徑,如下圖所示。

(搜一下就知道怎麼打開了)。怎麼理解我上訴所說的“特定的”,顯然就是指添加到這裏的文件路徑啦。因爲一臺電腦可以設置多個用戶(雖然一般我們可能只有一個)。如圖如果設置到用戶變量,就只對這個用戶有效,若設置到系統變量就對每個用戶都有效。設置環境變量的作用看第五點的第二段。

五. cmd&命令提示符& Anaconda Prompt&DOS操作系統

      在Win10搜索欄裏搜索cmd就會出現一個小黑框,cmd就是命令提示符。cmd 可以理解爲Windows操作系統兼容的DOS操作系統。它的指令執行方式是命令行,也是我們實現系統調用的一種方式,而Windows是圖形界面。比如在cmd下輸入calc,就會進行系統調用,顯示計算器;輸入notepad就會彈出一個記事本。那我們前面所說的pip install xxx就是在這裏執行的,但是要先進入一個虛擬環境中,意思就是進入一個虛擬環境然後安裝需要的包。

      現在回到環境變量。我們要查看Anaconda下有哪些虛擬環境,需要在cmd裏輸入conda env list。但是誰來執行這行指令呢,需要別人來解釋它啊【注意:這個不是python語言的指令,python語言的指令應該進入某個虛擬環境的python.exe中執行,而conda env list是在針對包管理器Anaconda,找出它所有的虛擬環境】。實際上,Windosw是在Path環境變量設定的所有路徑中去找到某種東西去解釋它。這個東西具體是什麼我沒深究,但經過實驗,如果我沒有在Path環境變量中增添C:\Users\QQ\Anaconda3\Scripts這條路徑,系統找不到東西來解釋它,所以出現以下情況:

 

        按Anaconda的教程安裝並配置好環境變量後,再運行上圖指令,就可以顯示Anaconda下有哪些虛擬環境,說明系統通過名爲Path,值爲“C:\Users\QQ\Anaconda3\Scripts”的環境變量(其實就是路徑)找到了可以執行該條指令的程序,便執行成功。如下:

而且通過觀察目錄,就可以知道root虛擬環境就在Anaconda文件夾裏,而另外兩個就在其envs文件夾裏,如圖:

       總結一下,設置環境變量,就是爲了告訴cmd 要執行“conda env list”指令應該去找誰翻譯執行,而這個 C:\Users\QQ\Anaconda3\Scripts(看名字顯然是放與腳本相關的東西)就是它需要的環境變量。系統默認到Path裏找,自然要到Path裏設置。這樣,即使就在用戶目錄下執行指令也可以執行成功。實際上,安裝完Anaconda後有一個叫Anaconda Prompt的類似cmd的東西。如果在這裏輸入“conda env list”也可以正確執行,即使Path沒有配置好環境變量,如圖:

 

       同理,如果在cmd裏輸入python.exe,Windows就會在Path的所有路徑中找到python.exe文件並執行(如果把Path中的C:\Users\QQ\Anaconda3路徑刪除也會同樣找不到,但若在Anaconda Prompt中總是可以成功執行)。我打開Anaconda Prompt所在位置,最後打開的是cmd,感覺這個也是調用了系統的cmd,只不過它是針對Anaconda而言的,方便使用。簡言之,就是Anaconda通過在Anaconda Prompt或者cmd上運行指令如conda list來管理虛擬環境,而python語言編寫的代碼是通過Anaconda管理的某個虛擬環境中的解釋器python.exe解釋執行的。

六. 個人總結

       一切的起因都是要用python,但是它的IDE沒有python解釋器,所以我們要去下載一個。Anaconda是比較好的python管理器,所以推薦安裝它。Anaconda又可以分很多個虛擬環境來管理,我們使用Anaconda裏的python解釋器是使用其某一個虛擬環境中的python解釋器。(如第三點中圖“root的虛擬環境”,可以看到Anaconda三個虛擬環境中都各自有自己的python.exe解釋器文件)。同時我們要管理這個Anaconda中的虛擬環境,用的是cmd或者Anaconda Prompt。最後,要用一個IDE來編寫調試python代碼,我使用pycharm比較順手,除此之外還有人喜歡用Jupyter Notebook。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章