Anaconda Pycharm 是怎麼個事兒?

Dba_sys發表於2021-08-27

前言

許多人學習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 https://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"

image
說到這裡,原生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

image

1.6.2 新增Anaconda的虛擬環境直譯器

這裡等一會兒就行了,他會自動尋找。其實就是虛擬環境裡的Python直譯器。

image

1.6.3 Create

這就成功建立了一個基於Anaconda的虛擬環境的Python專案。

我們開啟設定

看一下環境的包

image

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自帶直譯器。

image

直譯器使用anaconda的虛擬環境中的 python.exe也是可行的。

image

虛擬環境是很乾淨的,只有三個包。

2.2 專案的共享

你編寫了一個程式,下載了許多包。程式只有1 m,而專案的包卻有100 G。突然你想把這個專案上傳到網上。

這個100 G的東西壓縮都需要不少時間。有什麼更好的辦法呢。

這個虛擬環境自帶一個Python.exe pip。見下圖

image

在專案的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 http://mirrors.aliyun.com/pypi/simple/ pandas

3 虛擬環境

從某種角度說

Anaconda的虛擬環境是 集中式虛擬環境

Pycharm的虛擬環境是 分散式虛擬環境

文章可能發生改動。一些網站會爬取本文章可能會有出入。
https://www.cnblogs.com/asmurmur/

相關文章