使用./test.py运行Python脚本遇ICU数据错误,python ./test.py正常
问题原因及解决方案
错误原因
Windows系统不原生支持Unix/Linux的shebang执行机制,当你直接运行./test.py时,终端(即使是VS Code集成终端)在解析脚本的shebang行并启动Python时,会触发Python 3.13.5的ICU(国际化支持组件)初始化异常——Windows的文件描述符机制与Unix系统存在差异,导致Python无法正确加载ICU所需的数据文件,从而抛出Invalid file descriptor to ICU data received错误。
而用python ./test.py执行时,是直接通过系统PATH找到Python可执行文件并启动,绕开了shebang的兼容性解析流程,因此不会触发该问题。
解决/避免方案
- 优先使用标准执行方式:放弃直接运行
./test.py,统一使用python ./test.py或Windows官方推荐的py ./test.py命令执行脚本,这是最稳妥的方式,完全避免兼容性问题。 - 若需直接执行脚本(仅适用于类Unix终端环境):
- 确保VS Code集成终端使用Git Bash等类Unix环境;
- 给脚本添加可执行权限:在终端中运行
chmod +x test.py; - 将shebang行改为
#!/usr/bin/env python3,确保指向正确的Python版本,但仍需注意:这种方式仍可能因Windows与Unix的底层差异触发ICU错误,因此不推荐作为常规方案。
- 配置VS Code运行环境:在VS Code中使用「运行和调试」功能,配置Python解释器为3.13.5,直接点击运行按钮执行脚本,无需手动输入终端命令,既方便又能避免此类问题。
内容的提问来源于stack exchange,提问作者MerkMerk
相关产品推荐
相关产品推荐

