У меня возникли проблемы с импортом TensorFlow в мое приложение Python, только НО
- если я запускаю свое приложение в VSCode (через отладчик) ИЛИ
- если я запускаю его из терминала ВНУТРИ VSCode. Все работает нормально, если я запускаю приложение из терминала вне VSCode.
Я использую VSCode на macOS Big Sur версии 11.1 (чипсет M1). У меня установлены python 3.8.2 и TensorFlow в виртуальной среде.
Вот шаги для воспроизведения ошибки. Из терминала вне VSCode я запускаю
source env/bin/activate
для активации виртуальной средыpython
для запуска питона. Вывод на терминал (как и ожидалось): Python 3.8.2 (по умолчанию, 4 ноября 2020 г., 21:23:28) [...]import tensorflow as tf
print(tf.__version__)
Это выводит 2.4.0-rc0 на терминал (как и ожидалось).
Теперь, если я повторю те же самые шаги 1 и 2 во встроенном терминале VSCode, я получу точно такой же результат во 2. Однако, если я запущу команду 3 и попытаюсь импортировать тензорный поток, появится следующее сообщение об ошибке:
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
, чтобы открыть новый сеанс оболочки. Это должно гарантировать, что вы используете оба терминала с одной и той же оболочкой и настройкой, поэтому результаты должны быть одинаковыми (теоретически). Мне любопытно посмотреть, что произойдет. - person Jay Mody   schedule 27.12.2020zsh
до того, как выполнил шаги, описанные в исходном посте. Никаких изменений в результате. Как предложил @Ryan, я запустилecho $SHELL
иwhich python
, обе команды дают одинаковый результат во внутреннем и внешнем терминале. Tensorflow не был установлен через pip, поскольку версия, совместимая с M1, недоступна через pip. Поэтомуpip show tensorflow
выдает сообщение об ошибке как во внутреннем, так и во внешнем терминале @MollyWang. - person pancakeNbacon   schedule 28.12.2020tensorflow
в папке site-packages, если нет, скопируйте в нее модуль. - person Molly Wang-MSFT   schedule 29.12.2020