解決Python 報錯:ModuleNotFoundError: No module named ‘pkg_resources‘的問題
0. 快速說明
遇到 ModuleNotFoundError: No module named 'pkg_resources' 問題
不要去升級 setuptools,而是執(zhí)行 pip install "setuptools<82" 將它降級!
1. 踩坑背景
今天在跑一個深度學習項目的推理腳本(inference_stage2.py)時,遇到了一個極其詭異的報錯。我的環(huán)境是配置好的,依賴也裝全了,但只要程序一運行到加載 PyTorch 模型權重的環(huán)節(jié),就會直接崩潰。
完整的報錯信息如下:
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'報錯提示找不到 pkg_resources 這個模塊。
2. 排查過程
看到 No module named 'pkg_resources',我的第一反應是:這通常是 setuptools 沒有正確安裝引起的。于是我進行了一系列常規(guī)操作:
升級并強制重裝 setuptools (失敗)
pip install --upgrade --force-reinstall setuptools
終端顯示成功安裝了最新的 setuptools-82.0.1,但在 Python 里測試 import pkg_resources 依然報錯!
用 Conda 強制重裝 (失敗)
conda install -c conda-forge setuptools --force-reinstall
Conda 順利跑完,但測試依然提示找不到模塊。
甚至嘗試了清緩存、查 sys.path (統(tǒng)統(tǒng)失敗)
只要裝的是最新的 setuptools,pkg_resources 就像是消失了一樣。
3. 破案:根本原因
經過一番查找,終于發(fā)現(xiàn)了真相——這是 Python 包裝生態(tài)最近的一次重大更新導致的。
pkg_resources 是 setuptools 庫提供的一個包資源管理模塊。由于它在運行時有一定的性能開銷,Python 官方早在幾年前就開始推薦使用內置的 importlib.metadata 和 importlib.resources 來替代它。
在 2026 年 2 月初,setuptools 發(fā)布了里程碑式的版本更新(版本號 82.0.0 及以上)。在這個版本中,官方正式、徹底地移除了 pkg_resources 模塊!
這就導致了一個致命的斷層:
- 你通過 pip install setuptools 或者 Conda 默認拉取到了最新的 82.x 版本(沒有了 pkg_resources)。
- 但是你環(huán)境中安裝的某些舊版第三方庫(比如本例中的 pytorch_lightning / lightning_fabric),它們的源碼里依然寫著 import pkg_resources。
- 于是,由于底層依賴的抽離,哪怕你瘋狂 reinstall、清緩存,代碼也注定會崩潰。
4. 解決方案
知道原因后,解決起來就非常簡單了。
方案 :降級 setuptools
如果你不想或者不能升級代碼里的第三方庫(比如老項目需要固定的版本),直接將 setuptools 降級到 82.0.0 以下即可(最快、最穩(wěn)妥的方法)。
執(zhí)行以下命令:
pip install "setuptools<82"
降級完成后,再次測試:
python -c "import pkg_resources; print('pkg_resources found!')"
# 輸出: pkg_resources found!大功告成,之前的推理腳本終于可以順利運行了。
5. 總結
在深度學習和 Python 開發(fā)中,我們經常遇到某個庫昨天還好好的,今天重新建個虛擬環(huán)境就跑不通了。很大一部分原因就是某個底層依賴(如 setuptools, numpy, protobuf 等)發(fā)布了 Breaking Change (破壞性更新)。
到此這篇關于解決Python 報錯:ModuleNotFoundError: No module named ‘pkg_resources‘的問題的文章就介紹到這了,更多相關Python 報錯內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Python報錯ModuleNotFoundError的10種解決方案
- Python報錯ModuleNotFoundError: No module named ‘tensorboard‘的解決方法
- python命令行運行報錯ModuleNotFoundError:No module named‘XXX‘找不到自定義模塊
- Python打包文件執(zhí)行報錯:ModuleNotFoundError: No module named ‘pymssql‘的解決方法
- Python報錯:ModuleNotFoundError的解決辦法
- python 服務器運行代碼報錯ModuleNotFoundError的解決辦法
- 下載python中Crypto庫報錯:ModuleNotFoundError: No module named ‘Crypto’的解決

