Macbook M1芯片设备Jupyter Notebook导入keras后已导入包触发NameError问题
问题根因
该问题是M1架构Mac设备上,Python 3.7版本搭配通用版TensorFlow 2.7的兼容性缺陷导致:导入Keras时触发TensorFlow底层ARM架构适配初始化逻辑,会意外清空Jupyter内核当前的用户命名空间,导致之前导入的包别名、定义的变量全部失效。
可行解决方案
- 方案1:升级Python版本到3.8及以上,同步升级TensorFlow到2.8及以上版本,该系列版本已经修复了命名空间意外重置的问题,是长期稳定的解决方案。
- 方案2:如果必须保留当前Python 3.7环境,调整导入顺序,把所有Keras/TensorFlow相关的导入语句放到其他所有依赖包导入之前执行,后续导入的其他包、定义的变量就不会被清空。
- 方案3:替换当前pip安装的通用版TensorFlow为苹果官方适配M1芯片的TensorFlow版本,也可以直接规避该问题。
你目前使用的拆分单元格导入的临时方案可以正常使用,缺点是每次运行Notebook都需要严格按顺序执行单元格,不适合一键全量运行Notebook的场景。
内容的提问来源于stack exchange,提问作者Moritz Wittig
相关产品推荐
相关产品推荐

