VSCode 中的 Tensorflow 导入失败
Tensorflow import in VSCode fails
我在 python 应用程序中导入 TensorFlow 时遇到问题,但是 只有
- 如果我 运行 在 VSCode 中运行我的应用程序(通过调试器)或
- 如果我运行从 VSCode 内的终端连接它。
如果我从 VSCode.
之外的终端 运行 连接应用程序,一切正常
我 运行正在 VSCode 使用 macOS Big Sur 版本 11.1(M1 芯片组)。
我在虚拟环境中安装了 python 3.8.2 和 TensorFlow。
这是重现错误的步骤。来自VSCode之外的终端我运行
source env/bin/activate
激活虚拟环境
python
启动 python。输出到终端(如预期):Python 3.8.2(默认,2020 年 11 月 4 日,21:23:28)[...]
import tensorflow as tf
print(tf.__version__)
这会将“2.4.0-rc0”打印到终端(正如预期的那样)。
现在,如果我在内置 VSCode 终端中重复完全相同的步骤 1 和 2,我会在 2 中得到完全相同的输出。但是,如果我 运行 命令 3 并尝试导入tensorflow,出现以下错误信息:
Traceback (most recent call last):
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/pywrap_tensorflow.py", line 64, in <module>
from tensorflow.python._pywrap_tensorflow_internal import *
ImportError: dlopen(/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so, 6): no suitable image found. Did find:
/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: mach-o, but wrong architecture
/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: mach-o, but wrong architecture
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/__init__.py", line 41, in <module>
from tensorflow.python.tools import module_util as _module_util
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/__init__.py", line 39, in <module>
from tensorflow.python import pywrap_tensorflow as _pywrap_tensorflow
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/pywrap_tensorflow.py", line 83, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/pywrap_tensorflow.py", line 64, in <module>
from tensorflow.python._pywrap_tensorflow_internal import *
ImportError: dlopen(/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so, 6): no suitable image found. Did find:
/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: mach-o, but wrong architecture
/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: mach-o, but wrong architecture
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/errors
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
VSCode 内的终端似乎没有使用与 VSCode 外的终端相同的站点包,但是,运行ning print(sys.path)
给出了同样的结果。
如果我尝试在 VSCode 中 运行 我的应用程序,则会发生同样的问题,而如果我从终端 运行 运行它,它就会工作。
非常感谢任何建议。
尝试Python 3.7。许多人抱怨 tensorflow 不能在 3.8 上工作,但在 3.7 上工作。另外,尝试从 google tensorflow 网页下载它。
在上面的评论中借用了 Jay Mody。我会首先检查您在 VS 代码中使用的 shell 是否与您在非 VS 代码终端中使用的 shell 相同。
尝试以下 shell 命令:
echo $SHELL
如果您得到相同的输出,那么我建议确保使用完全相同的 python 可执行文件。尝试在 shell 中输入:
which python
在VS Code中,打开集成终端,激活环境后,运行
pip show tensorflow
检查模块是否存在于当前环境中。如果没有,请重新安装。
我仍然不知道为什么这个问题首先存在,但我现在通过 mini-conda 的 ARM 版本安装 python 3.8 解决了这个问题。
步骤如下。
- 从这里下载 mini-conda https://conda-forge.org/blog/posts/2020-10-29-macos-arm64/ 并安装它。
- 安装完成后,新建Conda环境
conda create --name python38 python=3.8
。这将安装 python 3.8 的 ARM 版本
- 激活新环境
conda activate python38
- 为您的项目创建一个新的虚拟环境。
python -m venv myEnv
- 下载ARM版tensorflow并解压https://github.com/apple/tensorflow_macos/releases
- 运行 用于安装 tensorflow 的包含脚本。
/Volumes/SSD/Jan/Downloads/tensorflow_macos/install_venv.sh --prompt
并将其指向您在步骤 4 中新创建的虚拟环境。
通过这些步骤,可以正确导入tensorflow。
更多参考资料让我找到了这个解决方案:
https://github.com/apple/tensorflow_macos/issues/8
https://github.com/apple/tensorflow_macos/issues/3
我在 python 应用程序中导入 TensorFlow 时遇到问题,但是 只有
- 如果我 运行 在 VSCode 中运行我的应用程序(通过调试器)或
- 如果我运行从 VSCode 内的终端连接它。 如果我从 VSCode. 之外的终端 运行 连接应用程序,一切正常
我 运行正在 VSCode 使用 macOS Big Sur 版本 11.1(M1 芯片组)。 我在虚拟环境中安装了 python 3.8.2 和 TensorFlow。
这是重现错误的步骤。来自VSCode之外的终端我运行
source env/bin/activate
激活虚拟环境python
启动 python。输出到终端(如预期):Python 3.8.2(默认,2020 年 11 月 4 日,21:23:28)[...]import tensorflow as tf
print(tf.__version__)
这会将“2.4.0-rc0”打印到终端(正如预期的那样)。
现在,如果我在内置 VSCode 终端中重复完全相同的步骤 1 和 2,我会在 2 中得到完全相同的输出。但是,如果我 运行 命令 3 并尝试导入tensorflow,出现以下错误信息:
Traceback (most recent call last):
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/pywrap_tensorflow.py", line 64, in <module>
from tensorflow.python._pywrap_tensorflow_internal import *
ImportError: dlopen(/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so, 6): no suitable image found. Did find:
/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: mach-o, but wrong architecture
/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: mach-o, but wrong architecture
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/__init__.py", line 41, in <module>
from tensorflow.python.tools import module_util as _module_util
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/__init__.py", line 39, in <module>
from tensorflow.python import pywrap_tensorflow as _pywrap_tensorflow
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/pywrap_tensorflow.py", line 83, in <module>
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/pywrap_tensorflow.py", line 64, in <module>
from tensorflow.python._pywrap_tensorflow_internal import *
ImportError: dlopen(/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so, 6): no suitable image found. Did find:
/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: mach-o, but wrong architecture
/Volumes/SSD/Jan/Documents/Github/TradingBot/env/lib/python3.8/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so: mach-o, but wrong architecture
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/errors
for some common reasons and solutions. Include the entire stack trace
above this error message when asking for help.
VSCode 内的终端似乎没有使用与 VSCode 外的终端相同的站点包,但是,运行ning print(sys.path)
给出了同样的结果。
如果我尝试在 VSCode 中 运行 我的应用程序,则会发生同样的问题,而如果我从终端 运行 运行它,它就会工作。
非常感谢任何建议。
尝试Python 3.7。许多人抱怨 tensorflow 不能在 3.8 上工作,但在 3.7 上工作。另外,尝试从 google tensorflow 网页下载它。
在上面的评论中借用了 Jay Mody。我会首先检查您在 VS 代码中使用的 shell 是否与您在非 VS 代码终端中使用的 shell 相同。
尝试以下 shell 命令:
echo $SHELL
如果您得到相同的输出,那么我建议确保使用完全相同的 python 可执行文件。尝试在 shell 中输入:
which python
在VS Code中,打开集成终端,激活环境后,运行
pip show tensorflow
检查模块是否存在于当前环境中。如果没有,请重新安装。
我仍然不知道为什么这个问题首先存在,但我现在通过 mini-conda 的 ARM 版本安装 python 3.8 解决了这个问题。
步骤如下。
- 从这里下载 mini-conda https://conda-forge.org/blog/posts/2020-10-29-macos-arm64/ 并安装它。
- 安装完成后,新建Conda环境
conda create --name python38 python=3.8
。这将安装 python 3.8 的 ARM 版本
- 激活新环境
conda activate python38
- 为您的项目创建一个新的虚拟环境。
python -m venv myEnv
- 下载ARM版tensorflow并解压https://github.com/apple/tensorflow_macos/releases
- 运行 用于安装 tensorflow 的包含脚本。
/Volumes/SSD/Jan/Downloads/tensorflow_macos/install_venv.sh --prompt
并将其指向您在步骤 4 中新创建的虚拟环境。
通过这些步骤,可以正确导入tensorflow。
更多参考资料让我找到了这个解决方案: https://github.com/apple/tensorflow_macos/issues/8 https://github.com/apple/tensorflow_macos/issues/3