Visual Studio 2022运行含import cv2的Python程序遇致命错误求助
问题背景
在Visual Studio 2022中运行名为QuiltRotation.py的Python图像旋转程序,终端执行import cv2无报错,但VS运行时抛出致命错误,怀疑是路径配置问题。
程序代码
import cv2 img = cv2.imread("C:\\Users\\FuzzyLogicUserName\\Documents\\FuzzyImage.png") (h, w) = img.shape[:2] center = (h/2, w/2) scale = 1.0 M = cv2.getRotationMatrix2D(CENTER, angle, scale) rotate = cv2.warpAffine(img, M, (h, w)) cv2.imshow("ShowTheImage", rotate) cv2.waitKey() cv2.destroyAllWindows()
错误信息
Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'
Current thread 0x00001054 (most recent call first):
Press any key to continue . . .
已尝试操作
- 卸载重装Python 3.12.1和opencv-contrib-python 4.8.1.78
- 终端环境下执行
import cv2无报错,但VS中运行程序仍出现上述错误
相关路径
- Python解释器路径:
C:\Users\FuzzyLogicUser\AppData\Local\Programs\Python\Python312\python.exe - 微软商店Python路径:
C:\Users\FuzzyLogicUser\AppData\Local\Microsoft\WindowsApps\python.exe - OpenCV模块路径:
C:\Users\FuzzyLogicUser\AppData\Local\Programs\Python\Python312\Lib\site-packages\cv2\__init__.py - 程序文件路径:
C:\Users\FuzzyLogic\source\repos\QuiltRotation.py\QuiltRotation.py.py
环境变量Path包含项
C:\Users\FuzzyLogicUser\AppData\Local\Programs\Python\Python312\Scripts\C:\Users\FuzzyLogicUser\AppData\Local\Programs\Python\Python312\C:\Users\FuzzyLogicUser\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python 3.12%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
解决方法
1. 确认VS使用的Python解释器
打开Visual Studio 2022,右键点击项目 → 选择「Python」→「Python Environments」,确保选中的解释器是C:\Users\FuzzyLogicUser\AppData\Local\Programs\Python\Python312\python.exe,避免使用微软商店版本的Python(WindowsApps路径下的)。
2. 修复Python安装关联
重新运行Python 3.12.1的安装包,选择「Modify」选项,确保勾选「Add Python to PATH」,点击「Install」完成修复,保证Python路径正确关联。
3. 手动设置VS调试的解释器路径
右键项目 → 「Properties」→「Debugging」,查看「Interpreter Path」,手动设置为C:\Users\FuzzyLogicUser\AppData\Local\Programs\Python\Python312\python.exe,保存后重新运行程序。
4. 清理VS缓存
关闭Visual Studio,删除%USERPROFILE%\AppData\Local\Microsoft\VisualStudio\17.0_xxxx\ComponentModelCache(xxxx为随机字符)目录下的所有文件,重启VS后再尝试运行。
额外代码提示
程序代码存在两处逻辑问题,启动错误解决后需修正:
CENTER需改为小写center(与前面定义的变量名一致)angle变量未定义,需添加角度值(如angle = 90表示旋转90度)
内容的提问来源于stack exchange,提问作者FuzzyLogic

