M1 Mac下PyCharm中Matplotlib架构不兼容报错求助
M1 Mac PyCharm中Matplotlib架构不兼容问题解决
问题描述
在M1 Mac的PyCharm中运行读取MiniSEED文件并绘制地震波形的代码时,触发ImportError:matplotlib的_c_internal_utils.cpython-311-darwin.so文件为arm64架构,但当前环境需要x86_64架构。尝试安装ARM64版本Matplotlib后,不确定文件结构是否正确,也不清楚PyCharm能否识别。另外,命令行pip show显示Matplotlib 3.7.1位于anaconda3目录,而PyCharm的Python解释器版本为3.7.2。
环境信息
- OSX Ventura 13.1
- PyCharm社区版2022.2.5(x86_64架构JVM)
运行代码
from obspy import read import matplotlib.pyplot as plt # 读取MiniSEED文件 st = read('/Users/petertsirushkin/Downloads/OO.HYS14..HDH.2020.092.00.00.00.000-2020.093.00.00.00.000.miniseed') trace = st[0] times = trace.times() amplitudes = trace.data # 绘制波形图 plt.plot(times, amplitudes) plt.xlabel('时间 (s)') plt.ylabel('振幅') plt.title('地震波形') plt.show()
报错信息
ImportError: dlopen(/Users/petertsirushkin/PycharmProjects/pythonProject1/venv/lib/python3.11/site-packages/matplotlib/_c_internal_utils.cpython-311-darwin.so, 0x0002): tried: '/Users/petertsirushkin/PycharmProjects/pythonProject1/venv/lib/python3.11/site-packages/matplotlib/_c_internal_utils.cpython-311-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/System/Volumes/Preboot/Cryptexes/OS/Users/petertsirushkin/PycharmProjects/pythonProject1/venv/lib/python3.11/site-packages/matplotlib/_c_internal_utils.cpython-311-darwin.so' (no such file), '/Users/petertsirushkin/PycharmProjects/pythonProject1/venv/lib/python3.11/site-packages/matplotlib/_c_internal_utils.cpython-311-darwin.so' (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64'))
问题根源
PyCharm使用的是x86_64架构JVM,默认通过Rosetta 2运行,会强制调用x86_64模式的Python解释器,但你安装的Matplotlib是arm64架构,两者架构不匹配导致报错。同时PyCharm配置的解释器版本与命令行环境不一致,加剧了环境混乱。
解决步骤
1. 统一环境架构
方案A:继续使用x86_64环境
- 在PyCharm中配置基于x86_64的Python解释器(比如通过Rosetta 2启动的Anaconda环境)。
- 激活该环境后,重新安装Matplotlib:
conda activate your_x86_env pip uninstall matplotlib pip install matplotlib
方案B:切换到arm64原生环境
- 安装支持arm64架构的PyCharm版本(2023.1及以上版本已原生支持arm64)。
- 配置arm64架构的Python解释器(如原生Anaconda或Homebrew安装的Python),确保Matplotlib为arm64版本。
2. 对齐PyCharm与命令行的Python环境
在PyCharm的File > Settings > Project: xxx > Python Interpreter中,选择命令行pip show matplotlib显示的anaconda3目录下的Python解释器,消除环境版本差异。
3. 验证架构匹配
在PyCharm终端执行以下命令,确认Python与Matplotlib架构一致:
# 检查Python架构 python -c "import platform; print(platform.machine())" # 检查Matplotlib的.so文件架构 lipo -info /Users/petertsirushkin/PycharmProjects/pythonProject1/venv/lib/python3.11/site-packages/matplotlib/_c_internal_utils.cpython-311-darwin.so
内容的提问来源于stack exchange,提问作者Peter
相关产品推荐
相关产品推荐

