虚拟环境pip执行报错:AttributeError: 'ResourceContainer'无src_path属性
解决虚拟环境中pip操作触发
AttributeError: 'ResourceContainer' object has no attribute 'src_path'的问题 问题详情
在Python 3.9.6版本的虚拟环境中,执行任何pip/pip3操作(包括安装Pillow、升级pip)都会触发相同的AttributeError,全局pip可正常使用,最后一次pip操作是安装customtkinter。
报错栈
> pip3 install pillow Traceback (most recent call last): File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "C:\Users\USER\Project\Scripts\pip3.exe\__main__.py", line 7, in <module> File "C:\Users\USER\Project\lib\site-packages\pip\_internal\cli\main.py", line 78, in main command = create_command(cmd_name, isolated=("--isolated" in cmd_args)) File "C:\Users\USER\Project\lib\site-packages\pip\_internal\commands\__init__.py", line 114, in create_command module = importlib.import_module(module_path) File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "C:\Users\USER\Project\lib\site-packages\pip\_internal\commands\install.py", line 16, in <module> from pip._internal.cli.req_command import ( File "C:\Users\USER\Project\lib\site-packages\pip\_internal\cli\req_command.py", line 19, in <module> from pip._internal.index.package_finder import PackageFinder File "C:\Users\USER\Project\lib\site-packages\pip\_internal\index\package_finder.py", line 31, in <module> from pip._internal.req import InstallRequirement File "C:\Users\USER\Project\lib\site-packages\pip\_internal\req\__init__.py", line 9, in <module> from .req_install import InstallRequirement File "C:\Users\USER\Project\lib\site-packages\pip\_internal\req\req_install.py", line 40, in <module> from pip._internal.operations.install.wheel import install_wheel File "C:\Users\USER\Project\lib\site-packages\pip\_internal\operations\install\wheel.py", line 40, in <module> from pip._vendor.distlib.scripts import ScriptMaker File "C:\Users\USER\Project\lib\site-packages\pip\_vendor\distlib\scripts.py", line 64, in <module> WRAPPERS = { File "C:\Users\USER\Project\lib\site-packages\pip\_vendor\distlib\scripts.py", line 64, in <dictcomp> WRAPPERS = { File "C:\Users\USER\Project\lib\site-packages\pip\_vendor\distlib\resources.py", line 196, in iterator for name in resource.resources: File "C:\Users\USER\Project\lib\site-packages\pip\_vendor\distlib\util.py", line 465, in __get__ value = self.func(obj) File "C:\Users\USER\Project\lib\site-packages\pip\_vendor\distlib\resources.py", line 115, in resources return self.finder.get_resources(self) File "C:\Users\USER\Project\lib\site-packages\pip\_vendor\distlib\resources.py", line 180, in get_resources return set([f for f in os.listdir(resource.src_path) if allowed(f)]) AttributeError: 'ResourceContainer' object has no attribute 'src_path'
环境信息
- 虚拟环境已安装包:
> py -m pip list Package Version ------------- --------- customtkinter 5.2.2 darkdetect 0.8.0 easygui 0.98.3 mido 1.3.2 numpy 2.0.1 opencv-python 4.10.0.84 packaging 23.2 pip 24.2 setuptools 60.2.0 wheel 0.37.1
- Python版本:
Python 3.9.6 - 虚拟环境pip版本:
pip 24.2 from D:\Users\USER\Project\lib\site-packages\pip (python 3.9)
解决步骤
方法1:用全局pip修复虚拟环境pip
利用正常的全局Python,强制升级虚拟环境中的pip:
# 替换路径为你的虚拟环境site-packages目录 py -3.9 -m pip install --upgrade pip --target="C:\Users\USER\Project\lib\site-packages"
执行完成后,重新在虚拟环境中运行pip命令验证是否恢复。
方法2:替换损坏的distlib模块
若方法1无效,大概率是pip依赖的distlib模块损坏:
- 找到全局Python的site-packages目录(示例路径:
C:\Users\DELL\AppData\Local\Programs\Python\Python39\Lib\site-packages),复制其中的distlib文件夹。 - 将复制的文件夹覆盖虚拟环境中pip的vendor目录下的
distlib(路径:C:\Users\USER\Project\lib\site-packages\pip\_vendor\distlib)。
方法3:重建虚拟环境(终极方案)
若以上方法均无效,说明虚拟环境已损坏,直接重建:
- 导出当前虚拟环境的依赖列表:
# 若pip无法执行该命令,可手动整理上方的包列表到requirements.txt pip freeze > requirements.txt
- 退出虚拟环境,删除原虚拟环境文件夹。
- 重新创建Python3.9.6的虚拟环境:
py -3.9 -m venv Project
- 激活新虚拟环境,安装所有依赖:
pip install -r requirements.txt
内容的提问来源于stack exchange,提问作者Electron X
相关产品推荐
相关产品推荐

