Anaconda Pycharm 是怎麼個事兒?
前言
許多人學習Python的經歷可能很相似,寫程式沒有問題,最後卻被各種環境困擾。
不論你是Python小白,還是學習Python有一段時間了。都可以認真的看一下ヾ(≧▽≦*)o
這篇文章讓你對Anaconda Pycharm理解更透徹。或許會有新的發現哦!
小故事
王二喜,男,性別不詳。程式設計師一個,頭髮一打。
“這年頭多會一門語言就是多會一門手藝,技多不壓身” 王二喜摸了摸自己未來的口袋,有了學習python的心思。
去Python的官網下載,安裝。出於程式設計師天生對於事物的控制感,王二喜打開了Python的安裝路徑。一個python.exe 和 pythonw.exe(IDLE 的一個組成部分),更複雜的路徑里還有pip.exe。王二喜摸了摸眼鏡說:「結構清晰,文件精簡」。轉身便投入到語法的海洋中去,領會其中的水深火熱。一句語法,一份力量。
就這樣,簡簡單單。幾天過去了…
王二喜很喜歡使用原生的IDLE。 這裡可以方便的測試各種Python語法。這期間命令行里輸入python pip ,誤打誤撞的學習的過程中也安裝了許多的庫文件,方便了自己的編程。
天氣晴朗,昨夜剛下了一場雨。
王二喜坐在電腦面前看著一篇博文《Python AI 手寫數字識別》,什麼神經網路,數據集,模型。所有的程式碼竟然不到100行。王二喜立刻照著程式碼,自己實現了一下。不錯,程式可以運行,可是很多關於 Deep Learning 的概念王二喜並不是很懂。王二喜決定找個教程學一學。教程A Anaconda。教程B Anaconda。教程C Anaconda。世界就是這麼循環往複,學習永不停止。
Anaconda 科學計算,方便包管理。王二喜根據一些教學影片,安裝了下來。一個良好的環境是心情美麗開發的起點。
**對於安裝成功後的測試中,王二喜在命令行輸入Python,發現出來的並不是的老相好原生python。而是新上任的Anaconda里的Python。
原來的pip也不可以使用了。王二喜大驚失色:「不會我原來的程式都不能運行了把。」
Python 3.8.8 (default, Apr 13 2021, 15:08:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Warning:
This Python interpreter is in a conda environment, but the environment has
not been activated. Libraries may fail to load. To activate this environment
please see //conda.io/activation
Type "help", "copyright", "credits" or "license" for more information.
>>>123
123
>>>exit()
王二喜感覺身體有點麻,不是全麻的那種,因為他還有部分感覺。
還好這場面這幾年來見過不少」大場面「,原生的Python IDLE 是可以繼續使用的。王二喜立刻調整了心態。身體的麻感也漸漸消失了…接著進行了Anaconda的探索。
電腦里出現了很多最近添加,王二喜點了一下Jupyter,出現一個網址,點進去發現很不錯。那Spyder 又是什麼呢。點擊了半天,發現並不可以使用 打不開的。王二喜並不清楚來自遠古的冰河世紀的麻感,漸漸的,漸漸的,向他圍攏了來…
點擊Navigator,原來圖形介面在這裡啊,launch一下jupyter,這東西也不動。
再創建一個新環境,只是走進度條,最後沒有結果。
」我這安裝了一個什麼東西?「王二喜在網上開始了漫漫的求解之路,此去山長水遠,少小離家老大回。為什麼視圖介面不可以運行Jupyter Spyder。這個問題他一輩子都沒有解決,不斷的試錯加深了他的麻感….
王二喜對Anaconda並不感冒,編寫程式還是喜歡使用原來的IDLE。就這樣又編了一段時間。
直到剛開始要接觸一些大的項目用到Pycharm。
初秋的夜,天氣已然微涼。王二喜感到嘴唇發麻,因為他喜歡白色的烈酒搭配紅色花椒粒。風很冷,這酒卻是暖暖的。王二喜打開電腦,開始今天的學習之旅。
正常安裝Pycharm後,開始創建項目,什 venv 什麼interpreter 為什麼要選擇interpreter?王二喜一臉疑惑。沒有答案並且腿麻了。
現在,王二喜開始接觸到虛擬環境了。知道在虛擬環境中安裝或者刪除的包,對於真正的Python全局來說並不影響。而且一個新的虛擬環境只有三個包,很乾凈。
王二喜興奮的按照教程創建出了自己的虛擬環境。
interpreter是解釋器。二喜把自己原生的python.exe 放了上去。
創建成功,但是爆出了一個錯誤
Invalid Python SDK
cannot set a python SDK at Python 3.10(PythonProject)(F:\Code\PythonProject\venv\Scripts\python.exe)
The SDK seems invalid
二喜心裡一驚同時屁股麻了,這是什麼東西?順手點擊了OK。這事兒也就過去了。樣常式序也可以運行。
迫不及待的試一試,找到了可以查看包的位置,二喜又一次瞪眼了,哪裡有之前的說的簡單的三個包啊,這**是把咱老Python的包給偷過來了了啊,坑爹啊。(瞪眼)
二喜站在哪裡傻傻的說不出話來。整個上半身頓時麻感就湧上來。
王二喜挺住啊!
有沒有可能已經是虛擬環境了,與外界隔離了,只不過初始的包庫是在原來的基礎之上。二喜對它還是有期待的。
二喜在包列表裡找了個不那麼重要的包,像抓一隻即將離開人世的小乳豬,他叫h5py。
打開原來的IDLE,import h5py print(h5py)。h5py高興的不得了,他輸出了自己的資訊。轉瞬二喜又到了pycharm里卸載了h5py….
這畢竟也是第一次在pycharm里卸載包,二喜還有點小興奮。
二喜很喜歡這個虛擬環境的功能,對於這種隔離,二喜vmware里已經嘗到不少甜頭。
打開原來的IDLE
import h5py
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import h5py
ModuleNotFoundError: No module named 'h5py'
多天的深夜程式編寫,一直報錯的項目環境,小豬豬的離奇死亡….
這一切的一切…
二喜胸口發悶。突然!!!世界一片漆黑,二喜再也沒有忍住,麻倒在地不省人世。嘴裡念叨著我的h5py小豬豬啊,嗚嗚嗚。
誰也不知道二喜與h5py的深厚感情….
看到這裡很多同志都想起了當年了吧(~ ̄▽ ̄)~
一些拙見
我們想要一個Python環境。只需要安裝Anaconda + Pycharm即可
原生的Python環境和Anaconda環境會有衝突。
原生Python的 python
pip
是放到用戶環境變數。
但是Anaconda也有這些命令。
Anaconda的 python
conda
pip
安裝時是直接放到系統環境變數。
這裡說一下環境變數。在命令行里我們要運行一個可執行xxx.exe程式,最常用的做法就是切換到這個程式所在的文件目錄,鍵入 xxx就執行了。這樣很麻煩,若我們將這個程式所在的文件目錄直接放到環境變數里,不論在那個文件目錄下,我們都可以鍵入xxx即可運行。
在Anaconda 和 原生Python之間現在出現了命令衝突。你運行python
pip
,作業系統怎麼分辨這是哪位大爺的程式?
答案是系統環境變數優於用戶環境變數。
二喜運行python
pip
的這些命令都是Anaconda里的。
原生Python這下就遭殃了。python
pip
這些重要的命令用不出來,它就很麻煩。而且匹配pycharm的時候,用原生python創建虛擬環境就會出現創不出來的情況。虛擬環境只能匹配原生的一切配置用到所謂的虛擬環境了。這已經不是虛擬了。
這時你試一試用Anaconda的解釋器去配虛擬環境。同樣是解釋器,Anaconda卻能正常的創建虛擬環境。
因此原生Python就失去了用物之地。很多人就蒙了,認為沒有原生python就沒有IDLE執行程式。
我們先說說原生python的特點,體積小巧,可以執行python程式(python.exe)的功能,一個pip。最重要的是有一個自帶的IDLE。絕大多數人最初編寫的程式都通過它運行。大家可以在這裡確認一些語法和演算法問題,很方便。
可我們看看Anaconda。
安裝上不生不響,雖然有一個jupyter可以使用類似IDLE的功能,但真的不太順手。Anaconda給人的第一印象就是,龐大的自帶科學計算庫,AI必用。
可是它還有一個重要的功能,分割各種Python環境,類似於我們的虛擬環境。在一個Anaconda里你可以創建無數的環境。這環境由一個類似完整獨立的python組成,這裡的獨立還包括對應的庫環境,如果你去看它的目錄結構,同一個原生的python幾乎一摸一樣,例如我創建了一個python3.7的環境,這裡可以使用python3.7,我又在這裡pip一個Requests包。過幾天我又創建了一個python3.9的環境,我在這裡pip一個Tensorflow包,這兩者是不相關的。這個功能與Pycharm配合會更好。
這些個環境可以通過Navigator來實現,存放在Anacnda安裝目錄里的evns目錄里。
很多人還是一頭霧水,這有什麼用?還不如我一個python IDLE好用。我必須保留原生的python。這是很多人對於原生Python的一個執念。
這裡又要說一個事兒。
Anaconda真是一個悶葫蘆。它自帶了python IDLE。 在安裝後卻沒有像jupyter那樣明顯的顯示。太敗家了。
原生python IDLE
IDLE (python 3.7.4 64-bit)
目標
C:\Users\hp四核\AppData\Local\Programs\Python\Python37\pythonw.exe "C:\Users\hp四核\AppData\Local\Programs\Python\Python37\Lib\idlelib\idle.pyw"
而Anaconda的在哪裡?和著這個一摸一樣啊!
右鍵桌面空白,新建,快捷方式。目標,還可以自己起一個名。
"F:\ProgramData\Anaconda3\pythonw.exe""F:\ProgramData\Anaconda3\Lib\idlelib\idle.pyw"
說到這裡,原生Python有的沒的Anaconda都是有的。為什麼還揪著原來的python不放?
卸載原生Python注意如果以前改過解釋器名稱的,改回來才可以正常卸載。
所以一個完整的python環境
只需要安裝Anaconda + Pycharm即可。
1 Anaconda使用
由於 很多人在 Anaconda Navigator 介面遇到很多問題。建議直接放棄視圖介面。
這裡介紹命令方法使用Anaconda。
1.1 查看conda版本
conda -V
4.10.1
1.2 查看各種虛擬環境
conda info -e
# conda environments:
#
base * F:\ProgramData\Anaconda3
1.3 創建一個虛擬的 python3.7環境 名字叫enviroment_name
conda create -n enviroment_name python=3.7
文件在Anaconda3\envs
虛擬環境 python3.7 與 原生python3.7 完全一致
你甚至可以利用快捷方式創建一個虛擬環境 python3.7的IDLE。與上面的方法一致。
1.4 虛擬環境的進入與退出
# To activate this environment, use
#
# $ conda activate py37
#
# To deactivate an active environment, use
#
# $ conda deactivate
這兩條命令可以隨時進入(退出)這個虛擬的環境,一旦進入,任何操作都與整體Python環境無關。包括下載包。
可以看到這個環境里只有四個包。很簡單。
(py37) C:\Users\hp四核>pip list
Package Version
------------ -------------------
certifi 2021.5.30
pip 21.0.1
setuptools 52.0.0.post20210125
wheel 0.37.0
wincertstore 0.2
1.5 虛擬環境的刪除
conda remove -n py37 --all
刪除所有的環境相關文件。
1.6 Pycharm利用Anaconda的虛擬環境
Pycharm是自帶虛擬環境功能的,不過他只是用一個python.exe在項目venv目錄里創建虛擬環境。
這裡講如何在pychrm利用Anaconda的虛擬環境。
Interpreter是Python的解釋器,運行Python需要解釋器的幫助。
例如在CMD里鍵入Python就是調用這個解釋器。解釋器會依賴其中的Python版本資訊,來解釋你的程式碼。
任何高級語言都需要解釋器,也都有解釋器。
interpreter 英 [ɪnˈtɜːprətə(r)] 美 [ɪnˈtɜːrprətər] n. 口譯譯員;口譯工作者;演繹(音樂、戲劇中人物等)的人;解釋程式
1.6.1 選擇 Previously configured interpreter
點擊新環境使用Anaconda
1.6.2 添加Anaconda的虛擬環境解釋器
這裡等一會兒就行了,他會自動尋找。其實就是虛擬環境里的Python解釋器。
1.6.3 Create
這就成功創建了一個基於Anaconda的虛擬環境的Python項目。
我們打開設置
看一下環境的包
2 Pycharm使用
C語言要想運行就必須要有gcc編譯器,C++運行就必須要有g++編譯器。任何語言的運行都需要編譯器的幫助。可是這些語言在創建運行時,我們離他們的編譯器很遠。他們藏在一些大型編譯環境的深處。
python便不一樣了,由於語言特性。他需要在創建一個項目的同時,指定一個Python的編譯器解釋器。
你在命令行運行Python程式的時候 python test.py
,其實也是指定了一個解釋器。希望大家能夠理解這層關係。
pycharm的一大優勢就是虛擬環境。根據一個Python的解釋器,在項目目錄里生成一個虛擬的環境。
Interpreter 就是 python.exe
。
2.1 虛擬環境創建
選擇 New environment using Virtualenv 外加一個解釋器Interpreter就可以了,下面圖片用的是Annaconda自帶解釋器。
解釋器使用anaconda的虛擬環境中的 python.exe
也是可行的。
虛擬環境是很乾凈的,只有三個包。
2.2 項目的共享
你編寫了一個程式,下載了許多包。程式只有1 m,而項目的包卻有100 G。突然你想把這個項目上傳到網上。
這個100 G的東西壓縮都需要不少時間。有什麼更好的辦法呢。
這個虛擬環境自帶一個Python.exe
pip
。見下圖
在項目的Terminal運行Python.exe
pip
就相當於激活了這個虛擬環境。一切操作針對這個虛擬環境。
2.2.1 製作依賴文件
在項目的Terminal運行
pip freeze > requirements.txt # 將項目的虛擬環境包的依賴放入requirements.txt
這樣你只需要將這兩個文件發送給他人即可
code.py
requirements.txt
2.2.2 使用有依賴文件的項目
創建一個新項目,使用一個新的虛擬環境。放入code.py
requirements.txt
在項目的Terminal運行
pip install -r requirements.txt
就會下載裡面的包。製作一個一摸一樣的環境。
pip利用中國阿里雲源 更加快速的下載包
pip install -i //mirrors.aliyun.com/pypi/simple/ pandas
3 虛擬環境
從某種角度說
Anaconda的虛擬環境是 集中式虛擬環境
Pycharm的虛擬環境是 分散式虛擬環境
文章可能發生改動。一些網站會爬取本文章可能會有出入。
//www.cnblogs.com/asmurmur/