解決Python 報(bào)錯(cuò):ModuleNotFoundError: No module named ‘pkg_resources‘的問題
0. 快速說明
遇到 ModuleNotFoundError: No module named 'pkg_resources' 問題
不要去升級(jí) setuptools,而是執(zhí)行 pip install "setuptools<82" 將它降級(jí)!
1. 踩坑背景
今天在跑一個(gè)深度學(xué)習(xí)項(xiàng)目的推理腳本(inference_stage2.py)時(shí),遇到了一個(gè)極其詭異的報(bào)錯(cuò)。我的環(huán)境是配置好的,依賴也裝全了,但只要程序一運(yùn)行到加載 PyTorch 模型權(quán)重的環(huán)節(jié),就會(huì)直接崩潰。
完整的報(bào)錯(cuò)信息如下:
Traceback (most recent call last):
...
File "D:\Projects\miniconda3\envs\LHTD\lib\site-packages\pytorch_lightning\__init__.py", line 25, in <module>
from lightning_fabric.utilities.seed import seed_everything # noqa: E402
File "D:\Projects\miniconda3\envs\LHTD\lib\site-packages\lightning_fabric\__init__.py", line 41, in <module>
__import__("pkg_resources").declare_namespace(__name__)
ModuleNotFoundError: No module named 'pkg_resources'報(bào)錯(cuò)提示找不到 pkg_resources 這個(gè)模塊。
2. 排查過程
看到 No module named 'pkg_resources',我的第一反應(yīng)是:這通常是 setuptools 沒有正確安裝引起的。于是我進(jìn)行了一系列常規(guī)操作:
升級(jí)并強(qiáng)制重裝 setuptools (失敗)
pip install --upgrade --force-reinstall setuptools
終端顯示成功安裝了最新的 setuptools-82.0.1,但在 Python 里測試 import pkg_resources 依然報(bào)錯(cuò)!
用 Conda 強(qiáng)制重裝 (失敗)
conda install -c conda-forge setuptools --force-reinstall
Conda 順利跑完,但測試依然提示找不到模塊。
甚至嘗試了清緩存、查 sys.path (統(tǒng)統(tǒng)失敗)
只要裝的是最新的 setuptools,pkg_resources 就像是消失了一樣。
3. 破案:根本原因
經(jīng)過一番查找,終于發(fā)現(xiàn)了真相——這是 Python 包裝生態(tài)最近的一次重大更新導(dǎo)致的。
pkg_resources 是 setuptools 庫提供的一個(gè)包資源管理模塊。由于它在運(yùn)行時(shí)有一定的性能開銷,Python 官方早在幾年前就開始推薦使用內(nèi)置的 importlib.metadata 和 importlib.resources 來替代它。
在 2026 年 2 月初,setuptools 發(fā)布了里程碑式的版本更新(版本號(hào) 82.0.0 及以上)。在這個(gè)版本中,官方正式、徹底地移除了 pkg_resources 模塊!
這就導(dǎo)致了一個(gè)致命的斷層:
- 你通過 pip install setuptools 或者 Conda 默認(rèn)拉取到了最新的 82.x 版本(沒有了 pkg_resources)。
- 但是你環(huán)境中安裝的某些舊版第三方庫(比如本例中的 pytorch_lightning / lightning_fabric),它們的源碼里依然寫著 import pkg_resources。
- 于是,由于底層依賴的抽離,哪怕你瘋狂 reinstall、清緩存,代碼也注定會(huì)崩潰。
4. 解決方案
知道原因后,解決起來就非常簡單了。
方案 :降級(jí) setuptools
如果你不想或者不能升級(jí)代碼里的第三方庫(比如老項(xiàng)目需要固定的版本),直接將 setuptools 降級(jí)到 82.0.0 以下即可(最快、最穩(wěn)妥的方法)。
執(zhí)行以下命令:
pip install "setuptools<82"
降級(jí)完成后,再次測試:
python -c "import pkg_resources; print('pkg_resources found!')"
# 輸出: pkg_resources found!大功告成,之前的推理腳本終于可以順利運(yùn)行了。
5. 總結(jié)
在深度學(xué)習(xí)和 Python 開發(fā)中,我們經(jīng)常遇到某個(gè)庫昨天還好好的,今天重新建個(gè)虛擬環(huán)境就跑不通了。很大一部分原因就是某個(gè)底層依賴(如 setuptools, numpy, protobuf 等)發(fā)布了 Breaking Change (破壞性更新)。
到此這篇關(guān)于解決Python 報(bào)錯(cuò):ModuleNotFoundError: No module named ‘pkg_resources‘的問題的文章就介紹到這了,更多相關(guān)Python 報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python報(bào)錯(cuò)ModuleNotFoundError的10種解決方案
- Python報(bào)錯(cuò)ModuleNotFoundError: No module named ‘tensorboard‘的解決方法
- python命令行運(yùn)行報(bào)錯(cuò)ModuleNotFoundError:No module named‘XXX‘找不到自定義模塊
- Python打包文件執(zhí)行報(bào)錯(cuò):ModuleNotFoundError: No module named ‘pymssql‘的解決方法
- Python報(bào)錯(cuò):ModuleNotFoundError的解決辦法
- python 服務(wù)器運(yùn)行代碼報(bào)錯(cuò)ModuleNotFoundError的解決辦法
- 下載python中Crypto庫報(bào)錯(cuò):ModuleNotFoundError: No module named ‘Crypto’的解決
相關(guān)文章
Python調(diào)用Zoomeye搜索接口的實(shí)現(xiàn)
本文主要介紹了Python調(diào)用Zoomeye搜索接口的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
在Python中使用sort()方法進(jìn)行排序的簡單教程
這篇文章主要介紹了在Python中使用sort()方法進(jìn)行排序的簡單教程,是Python學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
Python實(shí)現(xiàn)亂序文件重新命名編號(hào)
這篇文章主要為大家詳細(xì)介紹一下Python的一個(gè)神操作,那就是實(shí)現(xiàn)亂序文件重新命名編號(hào)功能,文中的示例代碼講解詳細(xì),感興趣的可以嘗試一下2022-08-08
Python之Web框架Django項(xiàng)目搭建全過程
這篇文章主要介紹了Python之Web框架Django項(xiàng)目搭建全過程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05
Python的pandas庫基礎(chǔ)知識(shí)超詳細(xì)教程
Pandas是Python數(shù)據(jù)處理核心庫,提供Series和DataFrame結(jié)構(gòu),支持CSV/Excel/SQL等數(shù)據(jù)源導(dǎo)入及清洗、合并、統(tǒng)計(jì)等功能,與Matplotlib集成實(shí)現(xiàn)可視化,廣泛應(yīng)用于金融、統(tǒng)計(jì)等領(lǐng)域,本文給大家介紹Python的pandas庫基礎(chǔ)知識(shí)超詳細(xì)教程,感興趣的朋友跟隨小編一起看看吧2025-09-09

