VS中可运行的Python程序在DOS提示符下运行报错:ImportError: Cannot import name EmailMessage
VS中可运行的Python程序在DOS提示符下运行报错:ImportError: Cannot import name EmailMessage
嗨,这个问题我之前也碰到过,大概率是Python版本不一致导致的,咱们一步步来排查解决:
问题根源
EmailMessage是Python 3.6及更高版本的email.message模块才新增的类。你在VS里能正常运行,说明VS使用的是符合版本要求的Python环境;但DOS提示符里默认调用的Python版本可能是3.5或更早(甚至不小心用到了Python 2),所以才会触发导入错误。
解决步骤
第一步:确认版本差异
在DOS提示符里输入以下命令,查看当前默认Python版本:python --version或者用Windows的Python启动器命令:
py --version再对比VS中使用的Python版本(VS右下角通常会显示当前环境的版本号,或者在VS的终端里执行同样的命令),确认两者是否一致。
第二步:指定高版本Python运行脚本
如果DOS里的版本确实偏低,直接调用对应高版本的Python来运行你的程序:- 比如你的高版本是Python 3.9,就输入:
python3.9 your_script.py - 或者用更可靠的Python启动器命令(自动识别系统内的Python版本):
py -3.9 your_script.py
- 比如你的高版本是Python 3.9,就输入:
第三步:设置默认Python版本(可选)
如果你想让DOS默认使用高版本Python,可以把高版本Python的安装路径(比如C:\Python39)和其下的Scripts目录添加到系统环境变量Path的最顶端,这样后续在DOS里输入python就会优先调用这个高版本。
额外排查项
顺便检查一下你的脚本文件有没有和标准库重名的情况,比如是不是把脚本命名为email.py——这种情况下会覆盖系统自带的email模块,也会导致导入错误。不过你在VS里能正常运行,这个可能性相对小,但也可以快速确认一下。
备注:内容来源于stack exchange,提问作者T_Rex
相关产品推荐
相关产品推荐

