Mac M1环境Spyder导入lxml提示ModuleNotFoundError报错排查
问题核心原因
出现这个问题的本质是Spyder当前调用的Python解释器,和你终端里安装了lxml 4.9.1的Python解释器不是同一个环境。M1系列芯片的Mac默认容易存在多套Python共存的情况:系统自带版本、Homebrew安装版本、Conda/Miniforge虚拟环境、官网下载的独立安装包,你在终端直接执行pip安装的包,不会自动同步到Spyder绑定的运行环境里,自然会报找不到模块的错。
分步解决方法
- 第一步:定位Spyder实际使用的解释器路径
打开Spyder的IPython控制台,直接运行以下代码:
控制台输出的绝对路径,就是Spyder运行代码时真的在调用的Python程序位置,把这个路径复制下来备用。import sys print(sys.executable) - 第二步:给对应解释器安装lxml
打开Mac终端,不要直接敲裸的pip install lxml,而是用刚才复制的完整Python路径,执行[你的Python路径] -m pip install lxml。举个例子,如果上一步输出的路径是/Users/yourname/miniforge3/bin/python,那终端要执行的命令就是:
这种安装方式可以100%保证包装到Spyder正在用的环境里,不会出现装错位置的问题。/Users/yourname/miniforge3/bin/python -m pip install lxml==4.9.1 - 可选方案:直接切换Spyder的解释器到已装lxml的环境
如果你已经确认自己终端里的Python 3.9.12环境装好了lxml,可以直接改Spyder的配置:打开顶部菜单栏的Preferences(偏好设置),找到Python Interpreter(Python解释器)选项,选择「使用自定义Python解释器」,浏览选中你终端里Python 3.9.12的可执行文件路径,保存后重启Spyder即可正常导入。
M1芯片适配注意事项
- 不要混用Rosetta转译的x86架构Python和arm原生架构的包,安装前可以在终端执行
arch命令,输出arm64就是正常的原生运行环境,装出来的lxml不会有架构兼容问题。 - 如果你是通过Anaconda安装的Spyder,最省事的方式是直接打开Anaconda Navigator,在启动Spyder对应的虚拟环境的包管理页面搜索lxml,点选安装即可,不用手动敲命令找路径。
报错信息参考:
已核查的环境版本信息参考:
内容的提问来源于stack exchange,提问作者Sky
相关产品推荐
相关产品推荐



