【发布时间】:2021-04-04 17:32:17
【问题描述】:
我无法在我的 python 应用程序中导入 TensorFlow,但只有
- 如果我在 VSCode 中运行我的应用程序(通过调试器)或
- 如果我在 VSCode 内从终端运行它。 如果我从 VSCode 之外的终端运行应用程序,一切正常。
我在 macOS Big Sur 版本 11.1(M1 芯片组)上运行 VSCode。 我在虚拟环境中安装了 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 之外的终端不同,但是,运行 print(sys.path) 会得到相同的结果。
如果我尝试在 VSCode 中运行我的应用程序,而如果我从终端运行它则它正在工作,则会发生同样的问题。
非常感谢任何建议。
【问题讨论】:
-
再次测试两个终端,但首先运行
zsh命令打开一个新的 shell 会话。这应该确保您使用相同的 shell 环境和设置运行两个终端,因此结果应该是相同的(理论上)。我很好奇会发生什么。 -
我按照建议重复测试并运行
zsh,然后再执行原始帖子中的步骤。结果没有变化。正如@Ryan 建议的那样,我运行了echo $SHELL和which python,这两个命令在内部和外部终端中产生相同的输出。 TensorFlow 未通过 pip 安装,因为 M1 兼容版本无法通过 pip 获得。因此,pip show tensorflow在内部和外部终端 @MollyWang 中都会给出错误消息 -
@pancakeNbacon。然后你可以在集成终端中打开当前激活的环境,检查site-packages文件夹中是否有
tensorflow,如果没有,将模块复制到其中。
标签: python python-3.x tensorflow visual-studio-code apple-m1