VSCode使用Jupyter时仅tensorflow模块导入后无法被后续代码块识别问题
问题排查与解决方案
该问题是Apple Silicon设备VSCode Jupyter插件的特有问题,仅出现在TensorFlow模块的原因是其arm64适配包的命名空间加载逻辑和Jupyter的变量缓存逻辑存在冲突,其他普通模块不会触发该bug
按优先级依次尝试以下解决方法:
- 确认两个代码块使用同一Jupyter内核:点击VSCode Jupyter界面右上角的内核选择按钮,确认运行两个代码块时选中的是同一个Python解释器内核,有时切换内核后前一个代码块的运行成功标识会残留,实际新内核未执行过import语句
- 更换适配Apple Silicon的TensorFlow版本:先执行命令
pip uninstall -y tensorflow tensorflow-macos tensorflow-metal卸载现有TensorFlow相关包,再执行pip install tensorflow-macos tensorflow-metal安装官方适配arm64架构的版本 - 关闭Jupyter变量跟踪功能:打开VSCode设置页面,搜索
Jupyter: Enable Variable Tracking,取消该选项的勾选,该功能对加载依赖较多的大体积模块的命名空间识别准确率较低,是触发该问题的常见原因 - 重启Jupyter内核后按顺序批量运行所有代码块,不要单独跳着运行第二个代码块
如果上述方法都不生效,可使用临时规避方案:将TensorFlow的import语句和后续调用逻辑放在同一个代码块中运行,即可避开该命名空间识别bug。
内容的提问来源于stack exchange,提问作者xin wang
相关产品推荐
相关产品推荐

