Python代碼又報(bào)錯(cuò)了?看下這個(gè)方法
剛學(xué)習(xí)python的同學(xué)經(jīng)常會(huì)遇到一個(gè)問(wèn)題: 已經(jīng)安裝了特定的包或者第三庫(kù),但是pycharm總是提示沒(méi)有找到。

比如我已經(jīng)有ddt了,可運(yùn)行腳本的時(shí)候卻告訴我沒(méi)有這個(gè)模塊:

出現(xiàn)這種問(wèn)題,你需要去檢查一下你實(shí)際使用的python環(huán)境和你正在配置的環(huán)境是否是同一個(gè),因?yàn)閜ython里經(jīng)常會(huì)遇到叫虛擬環(huán)境的玩意,可能你在不經(jīng)意的瞬間已經(jīng)創(chuàng)建了一個(gè)虛擬環(huán)境。
一、虛擬環(huán)境的好處
虛擬環(huán)境是一個(gè)將不同項(xiàng)目所需求的依賴分別放在獨(dú)立的地方的一個(gè)工具。
你可以大致理解成他是我們安裝的python.exe 的一份拷貝,這份拷貝獨(dú)立維護(hù)了每一個(gè)項(xiàng)目所需要的工具和庫(kù)。
比如我們有2個(gè)項(xiàng)目yuz1和yuz2。
yuz1需要安裝ddt的1.2.1版本。
yuz2是一個(gè)很老的項(xiàng)目,他需要ddt的1.1.2版本,不能升級(jí)到1.2.1。
所以在python當(dāng)中,我們需要維護(hù)2套依賴庫(kù)的環(huán)境,當(dāng)我要運(yùn)行yuz1, 就用環(huán)境1, 當(dāng)我要運(yùn)行yuz2,就是用環(huán)境2。
二、新建項(xiàng)目創(chuàng)建虛擬環(huán)境
從Python3.5以后,python可以非常方便的創(chuàng)建虛擬環(huán)境。
直接命令行創(chuàng)建:

在當(dāng)前工作目錄中找到venv_name文件夾。
在venv_name文件夾中,您將找到一個(gè)Scripts 文件夾,在這里你可以激活你的虛擬環(huán)境。

1、激活虛擬環(huán)境
在當(dāng)前目錄下,使用cmd運(yùn)行activate:

激活后會(huì)看看到路徑前面多了一個(gè)括號(hào):

2、退出虛擬環(huán)境:

退出環(huán)境以后,括號(hào)會(huì)消失,我們又回到了系統(tǒng)的python環(huán)境當(dāng)中。
3、虛擬環(huán)境當(dāng)中的python.exe
虛擬環(huán)境當(dāng)中的python.exe和系統(tǒng)的python.exe沒(méi)有什么區(qū)別,如果想要通過(guò)虛擬環(huán)境去運(yùn)行對(duì)應(yīng)的python文件,加上絕對(duì)路徑就可以直接運(yùn)行,不需要 activate激活。
這個(gè)在項(xiàng)目部署的時(shí)候非常有用,直接添加到.sh文件當(dāng)中:

三、Pycharm配置虛擬環(huán)境
虛擬環(huán)境的創(chuàng)建和關(guān)聯(lián)可以通過(guò)命令行實(shí)現(xiàn),但是pycharm提供了方便的圖形化操作的方式,所以你不會(huì)命令行也沒(méi)有關(guān)系。
創(chuàng)建項(xiàng)目的時(shí)候,提示new environment, 就可以創(chuàng)建虛擬環(huán)境。
existing interpreter里是系統(tǒng)里已經(jīng)創(chuàng)建了的環(huán)境,他包含系統(tǒng)環(huán)境和其他已創(chuàng)建的虛擬環(huán)境。
如果想單獨(dú)建立,就選擇new environment; 如果想使用原來(lái)已經(jīng)創(chuàng)建好的,就點(diǎn)擊選擇就可以了。
比如我們可以通過(guò) ... 符號(hào)選擇上面建立好的venv_name這個(gè)虛擬環(huán)境和項(xiàng)目關(guān)聯(lián)。

四、已有項(xiàng)目關(guān)聯(lián)虛擬環(huán)境
在 PyCharm -> Preferences 進(jìn)入 project setting 設(shè)置
查看所有的環(huán)境:

點(diǎn)擊+號(hào),就可以進(jìn)入環(huán)境選擇;
如果沒(méi)有出現(xiàn)在列表中,點(diǎn)擊 ... 進(jìn)入路徑選擇窗口進(jìn)入對(duì)應(yīng)的目錄下選擇:

虛擬環(huán)境在 python 學(xué)習(xí)過(guò)程中不是必須的,但是如果你的項(xiàng)目很多,你一定會(huì)發(fā)現(xiàn)你的安裝包文件夾已經(jīng)亂成一鍋粥了。
趕緊用虛擬環(huán)境去整理一下吧。