M2 MacBook Air运行Python3.6脚本报zsh非法硬件指令错误求助
问题分析与解决:M2 MacBook Air运行Python脚本报"illegal hardware instruction"错误
环境与问题概况
- 设备:M2 MacBook Air
- Conda环境:Python 3.6.13(课程强制要求版本)
- 已安装库:imageatm
- 错误信息:
zsh: illegal hardware instruction python run.py - 已尝试:配置Conda源,无效;怀疑硬件问题
运行脚本(run.py)
from imageatm.components import DataPrep dp = DataPrep( image_dir='~~~', samples_file='data.json', job_dir= './sample' ) dp.run(resize=True) from imageatm.components import Training trainer = Training(dp.image_dir, dp.job_dir, epochs_train_dense=3, epochs_train_all=1) trainer.run() from imageatm.components import Evaluation e = Evaluation(image_dir=dp.image_dir, job_dir=dp.job_dir) e.run()
Conda包列表
absl-py 0.15.0 pypi_0 pypi ansiwrap 0.8.4 pypi_0 pypi astor 0.8.1 pypi_0 pypi astunparse 1.6.3 pypi_0 pypi async_generator 1.10 py36h28b3542_0 attrs 22.2.0 pypi_0 pypi awscli 1.24.10 pypi_0 pypi bleach 4.1.0 pyhd3eb1b0_0 botocore 1.26.10 pypi_0 pypi ca-certificates 2023.01.10 hecd8cb5_0 cached-property 1.5.2 pypi_0 pypi cachetools 4.2.4 pypi_0 pypi certifi 2022.12.7 pypi_0 pypi charset-normalizer 2.0.12 pypi_0 pypi clang 5.0 pypi_0 pypi click 8.0.4 pypi_0 pypi colorama 0.4.4 pypi_0 pypi cycler 0.11.0 pypi_0 pypi dataclasses 0.8 pypi_0 pypi decorator 4.4.2 pypi_0 pypi defusedxml 0.7.1 pyhd3eb1b0_0 docutils 0.16 pypi_0 pypi entrypoints 0.4 pypi_0 pypi flatbuffers 1.12 pypi_0 pypi gast 0.4.0 pypi_0 pypi google-auth 1.35.0 pypi_0 pypi google-auth-oauthlib 0.4.6 pypi_0 pypi google-pasta 0.2.0 pypi_0 pypi grpcio 1.48.2 pypi_0 pypi h5py 3.1.0 pypi_0 pypi idna 3.4 pypi_0 pypi imageatm 0.1.1 pypi_0 pypi imageio 2.15.0 pypi_0 pypi importlib-metadata 4.8.3 pypi_0 pypi importlib-resources 5.4.0 pypi_0 pypi ipython_genutils 0.2.0 pyhd3eb1b0_1 jinja2 3.0.3 pyhd3eb1b0_0 jmespath 0.10.0 pypi_0 pypi joblib 1.1.1 pypi_0 pypi jsonschema 3.2.0 pypi_0 pypi jupyter-core 4.9.2 pypi_0 pypi jupyter_client 7.1.2 pyhd3eb1b0_0 jupyter_core 4.8.1 py36hecd8cb5_0 jupyterlab_pygments 0.1.2 py_0 keras 2.2.4 pypi_0 pypi keras-applications 1.0.8 pypi_0 pypi keras-preprocessing 1.1.2 pypi_0 pypi keras-vis 0.4.1 pypi_0 pypi kiwisolver 1.3.1 pypi_0 pypi libcxx 14.0.6 h9765a3e_0 libffi 3.3 hb1e8313_2 libsodium 1.0.18 h1de35cc_0 markdown 3.3.7 pypi_0 pypi markupsafe 2.0.1 py36h9ed2024_0 matplotlib 3.3.4 pypi_0 pypi mistune 0.8.4 py36h1de35cc_0 mock 5.0.1 pypi_0 pypi multidict 5.2.0 pypi_0 pypi nbclient 0.5.9 pypi_0 pypi nbconvert 6.0.7 py36_0 nbformat 5.1.3 pyhd3eb1b0_0 ncurses 6.4 hcec6c5f_0 nest-asyncio 1.5.6 pypi_0 pypi networkx 2.5.1 pypi_0 pypi numpy 1.19.5 pypi_0 pypi oauthlib 3.2.2 pypi_0 pypi openssl 1.1.1t hca72f7f_0 opt-einsum 3.3.0 pypi_0 pypi packaging 21.3 pyhd3eb1b0_0 pandoc 2.12 hecd8cb5_3 pandocfilters 1.5.0 pyhd3eb1b0_0 papermill 2.3.4 pypi_0 pypi pillow 8.4.0 pypi_0 pypi pip 21.2.2 py36hecd8cb5_0 protobuf 3.19.6 pypi_0 pypi pyasn1 0.4.8 pypi_0 pypi pyasn1-modules 0.2.8 pypi_0 pypi pygments 2.11.2 pyhd3eb1b0_0 pyparsing 3.0.9 pypi_0 pypi pyrsistent 0.18.0 pypi_0 pypi python 3.6.13 h88f2d9e_0 python-dateutil 2.8.2 pyhd3eb1b0_0 pywavelets 1.1.1 pypi_0 pypi pyyaml 5.4.1 pypi_0 pypi pyzmq 25.0.2 pypi_0 pypi readline 8.2 hca72f7f_0 requests 2.27.1 pypi_0 pypi requests-oauthlib 1.3.1 pypi_0 pypi rsa 4.7.2 pypi_0 pypi s3transfer 0.5.2 pypi_0 pypi scikit-image 0.17.2 pypi_0 pypi scikit-learn 0.24.2 pypi_0 pypi scipy 1.1.0 pypi_0 pypi setuptools 59.6.0 pypi_0 pypi six 1.15.0 pypi_0 pypi sqlite 3.41.1 h6c40b1e_0 tenacity 8.2.2 pypi_0 pypi tensorboard 1.13.1 pypi_0 pypi tensorboard-data-server 0.6.1 pypi_0 pypi tensorboard-plugin-wit 1.8.1 pypi_0 pypi tensorflow 1.13.1 pypi_0 pypi tensorflow-estimator 1.13.0 pypi_0 pypi termcolor 1.1.0 pypi_0 pypi testpath 0.5.0 pyhd3eb1b0_0 textwrap3 0.9.2 pypi_0 pypi threadpoolctl 3.1.0 pypi_0 pypi tifffile 2020.9.3 pypi_0 pypi tk 8.6.12 h5d9f67b_0 tornado 6.1 py36h9ed2024_0 tqdm 4.64.1 pypi_0 pypi traitlets 4.3.3 py36hecd8cb5_0 typing-extensions 3.7.4.3 pypi_0 pypi urllib3 1.26.15 pypi_0 pypi webencodings 0.5.1 py36_1 werkzeug 2.0.3 pypi_0 pypi wheel 0.37.1 pypi_0 pypi wrapt 1.12.1 pypi_0 pypi xz 5.2.10 h6c40b1e_1 yarl 1.7.2 pypi_0 pypi zeromq 4.3.4 h23ab428_0 zipp 3.6.0 pypi_0 pypi zlib 1.2.13 h4dc903c_0
错误原因分析
- ARM架构兼容性问题:M2是ARM64架构,而Python 3.6.13及相关依赖(如TensorFlow 1.13.1)主要为x86_64编译,部分底层库包含x86专属指令,在ARM设备上执行会触发"illegal hardware instruction"错误。
- 依赖包编译问题:通过PyPI安装的TensorFlow 1.13.1没有ARM版本,Conda安装的Python 3.6.13虽支持ARM,但依赖的二进制包可能仍存在x86指令残留。
解决办法
方案一:使用Rosetta 2运行环境
- 打开终端,执行
arch -x86_64 zsh切换到x86兼容模式 - 在该模式下创建新的Conda环境:
conda create -n py36_x86 python=3.6.13 - 激活环境:
conda activate py36_x86 - 重新安装所有依赖:
pip install imageatm tensorflow==1.13.1 ...(按原包列表安装) - 运行脚本:
python run.py
方案二:替换兼容ARM的依赖版本(若课程允许微调)
- 若课程对TensorFlow版本要求不严格,尝试升级到支持ARM的TensorFlow 2.x版本(需同步调整imageatm代码,部分API可能不兼容)
- 重新安装适配ARM的依赖包,确保所有二进制包为ARM64架构
方案三:使用Docker容器
- 拉取x86_64架构的Python 3.6镜像:
docker pull python:3.6-slim - 在容器内创建环境并安装依赖,挂载本地代码目录运行脚本,利用Docker的Rosetta兼容层执行
内容的提问来源于stack exchange,提问作者Jiminji
相关产品推荐
相关产品推荐

