Raspberry Pi OS預(yù)裝了Python,你需要使用其虛擬環(huán)境來(lái)安裝包。今天出版的最新一期《The MagPi》雜志刊登了我們文檔負(fù)責(zé)人Nate Contino撰寫(xiě)的一篇實(shí)用教程,幫助你入門(mén)。
Raspberry Pi OS預(yù)裝了Python 3。干擾系統(tǒng)Python的安裝可能會(huì)給你的操作系統(tǒng)帶來(lái)問(wèn)題。安裝第三方Python庫(kù)時(shí),請(qǐng)務(wù)必使用正確的包管理工具。
在Linux上,你可以通過(guò)兩種方式安裝Python依賴:
使用apt安裝預(yù)配置的系統(tǒng)包
- 在虛擬環(huán)境中使用Python的依賴管理器pip安裝庫(kù)
可以在 Thonny 內(nèi)部創(chuàng)建虛擬環(huán)境,也可以通過(guò)命令行創(chuàng)建虛擬環(huán)境。
使用apt安裝Python包
通過(guò)apt安裝的包是專(zhuān)門(mén)為Raspberry Pi OS打包的。這些包通常已經(jīng)過(guò)預(yù)編譯,因此安裝速度更快。由于apt管理所有包的依賴項(xiàng),因此使用此方法安裝包括運(yùn)行該包所需的所有子依賴項(xiàng)。如果你卸載包,apt還可以確保你不會(huì)破壞其他包。
例如,要安裝支持Raspberry Pi Build HAT的Python 3庫(kù),請(qǐng)運(yùn)行以下命令:
$ sudo apt install python3-build-hat
要查找通過(guò)apt分發(fā)的Python包,請(qǐng)使用apt search。在大多數(shù)情況下,Python包使用前綴python-或python3-:例如,你可以在python3-numpy下找到numpy包。
使用pip安裝Python庫(kù)
在Raspberry Pi OS的舊版本中,你可以使用pip直接將庫(kù)安裝到系統(tǒng)版本的Python中。但從Raspberry Pi OS Bookworm版本開(kāi)始,用戶無(wú)法直接將庫(kù)安裝到系統(tǒng)版本的Python中。
在Raspberry Pi OS Bookworm中嘗試使用pip安裝包會(huì)導(dǎo)致錯(cuò)誤。
相反,應(yīng)將庫(kù)安裝到虛擬環(huán)境(venv)中。若要在系統(tǒng)級(jí)別為所有用戶安裝庫(kù),請(qǐng)使用apt進(jìn)行安裝。
嘗試在系統(tǒng)范圍內(nèi)安裝Python包會(huì)輸出類(lèi)似于以下的錯(cuò)誤:
$ pip install buildhaterror: externally-managed-environment
× This environment is externally managed╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install.
If you wish to install a non-Debian-packaged Python package, create a virtual environment using python3 -m venv path/to/venv. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make sure you have python3-full installed.
For more information visit http://rptl.io/venv
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.hint: See PEP 668 for the detailed specification.
長(zhǎng)期以來(lái),Python用戶一直需要處理像apt這樣的操作系統(tǒng)包管理器和像pip這樣的Python專(zhuān)用包管理工具之間的沖突。這些沖突包括Python級(jí)別的API不兼容性和文件所有權(quán)沖突。
從Raspberry Pi OS Bookworm版本開(kāi)始,通過(guò)pip安裝的包必須安裝到Python虛擬環(huán)境(venv)中。虛擬環(huán)境是一個(gè)容器,你可以在其中安全地安裝第三方模塊,這樣它們就不會(huì)干擾你的系統(tǒng)Python。
在虛擬環(huán)境中使用pip
要使用虛擬環(huán)境,請(qǐng)創(chuàng)建一個(gè)容器來(lái)存儲(chǔ)環(huán)境。根據(jù)你想要如何使用Python,有幾種方法可以做到這一點(diǎn):
按項(xiàng)目環(huán)境
在項(xiàng)目文件夾中創(chuàng)建一個(gè)虛擬環(huán)境,以安裝該項(xiàng)目本地的包。
許多用戶為每個(gè)Python項(xiàng)目創(chuàng)建單獨(dú)的虛擬環(huán)境。將虛擬環(huán)境定位在每個(gè)項(xiàng)目的根文件夾中,通常使用一個(gè)共享的名稱(chēng),如env。從每個(gè)項(xiàng)目的根文件夾運(yùn)行以下命令來(lái)創(chuàng)建虛擬環(huán)境配置文件夾:
$ python -m venv env
在開(kāi)始處理項(xiàng)目之前,從項(xiàng)目的根目錄運(yùn)行以下命令以開(kāi)始使用虛擬環(huán)境:
$ source env/bin/activate
然后你應(yīng)該會(huì)看到一個(gè)類(lèi)似于以下的提示符:
$ (.env) $
當(dāng)你完成一個(gè)項(xiàng)目的工作后,從任何目錄運(yùn)行以下命令以退出虛擬環(huán)境:
$ deactivate
按用戶環(huán)境
而不是為你的每個(gè)Python項(xiàng)目創(chuàng)建一個(gè)虛擬環(huán)境,你可以為你的用戶帳戶創(chuàng)建一個(gè)單獨(dú)的虛擬環(huán)境。在運(yùn)行任何Python代碼之前激活該虛擬環(huán)境。對(duì)于跨項(xiàng)目共享許多庫(kù)的工作流,這種方法可能更方便。
在為整個(gè)用戶帳戶的多個(gè)項(xiàng)目創(chuàng)建虛擬環(huán)境時(shí),請(qǐng)考慮將虛擬環(huán)境配置文件定位在你的主目錄中。將你的配置文件存儲(chǔ)在一個(gè)名稱(chēng)以句點(diǎn)開(kāi)頭的文件夾中,以便默認(rèn)隱藏該文件夾,防止其使你的主文件夾雜亂無(wú)章。
在主目錄中添加一個(gè)虛擬環(huán)境,以便在多個(gè)項(xiàng)目中使用并共享包。
使用以下命令在當(dāng)前用戶的主目錄中的隱藏文件夾中創(chuàng)建一個(gè)虛擬環(huán)境:
$ python -m venv ~/.env
從任何目錄運(yùn)行以下命令以開(kāi)始使用虛擬環(huán)境:
$ source ~/.env/bin/activate
然后你應(yīng)該會(huì)看到一個(gè)類(lèi)似于以下的提示符:
$ (.env) $
要退出虛擬環(huán)境,從任何目錄運(yùn)行以下命令:
$ deactivate
創(chuàng)建虛擬環(huán)境
運(yùn)行以下命令以創(chuàng)建虛擬環(huán)境配置文件夾,將替換為你想要為虛擬環(huán)境使用的名稱(chēng)(例如env):
$ python -m venv
進(jìn)入虛擬環(huán)境
然后,在虛擬環(huán)境配置文件夾中執(zhí)行bin/activate腳本來(lái)進(jìn)入虛擬環(huán)境:
$ source /bin/activate
然后你應(yīng)該會(huì)看到一個(gè)類(lèi)似于以下的提示符:
$ (
()命令提示符前綴表示當(dāng)前終端會(huì)話處于名為的虛擬環(huán)境中。
要檢查你是否處于虛擬環(huán)境中,請(qǐng)使用pip list查看已安裝包的列表:
$ () $ pip listPackage Version---------- -------pip 23.0.1setuptools 66.1.1
列表應(yīng)該比你的系統(tǒng)Python中安裝的包列表短得多?,F(xiàn)在你可以安全地使用pip安裝包。在虛擬環(huán)境中,你使用pip安裝的任何包都只安裝到該虛擬環(huán)境中。在虛擬環(huán)境中,python或python3命令會(huì)自動(dòng)使用虛擬環(huán)境的Python版本和已安裝包,而不是系統(tǒng)Python。
小貼士:在文件夾名稱(chēng)前傳遞–system-site-packages標(biāo)志,以將當(dāng)前系統(tǒng)Python安裝中已安裝的所有包預(yù)加載到虛擬環(huán)境中。
退出虛擬環(huán)境
要退出虛擬環(huán)境,運(yùn)行以下命令:
$ () $ deactivate
使用Thonny編輯器
我們建議在Raspberry Pi上使用Thonny編輯Python代碼。
默認(rèn)情況下,Thonny使用系統(tǒng)Python。但是,你可以通過(guò)點(diǎn)擊Thonny窗口右下角的解釋器菜單來(lái)切換到使用Python虛擬環(huán)境。選擇一個(gè)已配置的環(huán)境或使用“配置解釋器”配置一個(gè)新的虛擬環(huán)境。
-
虛擬環(huán)境
+關(guān)注
關(guān)注
0文章
29瀏覽量
9016 -
python
+關(guān)注
關(guān)注
56文章
4822瀏覽量
85857 -
Raspberry Pi
+關(guān)注
關(guān)注
2文章
616瀏覽量
22774
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
用離線安裝器安裝的idf,其創(chuàng)建的Python虛擬環(huán)境無(wú)激活腳本是怎么回事?
在虛擬環(huán)境網(wǎng)絡(luò)研討會(huì)中使用ArcGIS Pro存檔GIS工作流程?
Linux的虛擬環(huán)境使用方法
如何在 Linux 上安裝 Python
項(xiàng)目的創(chuàng)建及虛擬環(huán)境的配置
【Milk-V Duo 開(kāi)發(fā)板免費(fèi)體驗(yàn)】Milk-V Duo 開(kāi)發(fā)板使用阿里云主機(jī)的python環(huán)境搭建
python如何配置虛擬環(huán)境?
Python虛擬環(huán)境pipenv的使用
創(chuàng)建Root權(quán)限虛擬環(huán)境

評(píng)論