在aarch64上安装Tensorflow:错误:找不到满足tensorflow要求的版本

Posted

技术标签:

【中文标题】在aarch64上安装Tensorflow:错误:找不到满足tensorflow要求的版本【英文标题】:Installation of Tensorflow on aarch64: Error: Could not find a version that satisfies the requirement tensorflow 【发布时间】:2019-10-17 23:37:03 【问题描述】:

我想在 aarch64(Ubuntu 16.04;Linux on DeX)上安装 Tensorflow。

尝试 1: 遵循与经典 x86_64 架构相同的程序(在那里工作);见here

sudo apt update
sudo apt install python3-dev python3-pip virtualenv # the latter was required under aarch64, not under x86_64
sudo -H pip3 install --upgrade virtualenv
mkdir /usr/local/tensorflow
virtualenv --system-site-packages -p python3 /usr/local/tensorflow
source /usr/local/tensorflow/bin/activate
pip3 install --upgrade tensorflow # fails with 'Error: Could not find a version that satisfies the requirement tensorflow (from versions: none)' and 'Error: No matching distribution found for tensorflow'

与尝试 1 相关但适用于 Windows 的帖子是 this here。还可以找到其他帖子(类似标题),但似乎没有一篇涉及 ARM 架构。

尝试2:关注these instructions

sudo apt update
sudo apt install python3-dev python3-pip
mkdir /usr/local/tensorflow
cd /usr/local/tensorflow
wget https://github.com/lhelontra/tensorflow-on-arm/releases/download/v1.8.0/tensorflow-1.8.0-cp35-none-linux_aarch64.whl
sudo -H pip3 install tensorflow-1.8.0-cp35-none-linux_aarch64.whl
# => reports 'Failed building wheel for ...'. Still seems to somehow progress
#    but then 'import tensorflow as tf' in a Python 3.5.2 session produces a lot
#    of traceback output and essentially shows that the installation did not work.

第三次尝试中,我尝试关注these instructions,但是 无法从here 安装 Bazel 作为步骤 2 失败,因为没有 aarch64 版本(即使下载了 .tar.gz,编译也会失败,ERROR: Must specify PROTOC if not bootstrapping from the distribution artifact...

更多信息:python --version 显示 2.7.12python3 --version 显示 3.5.2

更新

我尝试了 hoefling 对尝试 1 的建议。在 pip3 install --upgrade tensorflow 之前运行 pip3 install tensorflow --extra-index-url=https://www.piwheels.org/simple 使后者工作没有明显错误,但启动 python3 并使用 import tensorflow as tf 我仍然获得大量回溯输出:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "/usr/lib/python3.5/imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "/usr/lib/python3.5/imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: /usr/lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /usr/local/lib/python3.5/dist-packages/tensorflow/python/_pywrap_tensorflow_internal.so)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/__init__.py", line 24, in <module>
    from tensorflow.python import pywrap_tensorflow  # pylint: disable=unused-import
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/__init__.py", line 49, in <module>
    from tensorflow.python import pywrap_tensorflow
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 74, in <module>
    raise ImportError(msg)
ImportError: Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow.py", line 58, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 28, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
  File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/pywrap_tensorflow_internal.py", line 24, in swig_import_helper
    _mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
  File "/usr/lib/python3.5/imp.py", line 242, in load_module
    return load_dynamic(name, filename, file)
  File "/usr/lib/python3.5/imp.py", line 342, in load_dynamic
    return _load(spec)
ImportError: /usr/lib/aarch64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /usr/local/lib/python3.5/dist-packages/tensorflow/python/_pywrap_tensorflow_internal.so)


Failed to load the native TensorFlow runtime.

See https://www.tensorflow.org/install/install_sources#common_installation_problems

for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

【问题讨论】:

您尝试从 piwheels 安装吗? pip install tensorflow --extra-index-url=https://www.piwheels.org/simple。尽管这些***是为 raspberry pi 构建的,但其中一些是通用的,足以在任意 ARM 硬件上工作。 您好,感谢您的帮助。我在底部添加了更新。我仍然得到相同的错误(输出),但也许你从这里看到了一些东西。 【参考方案1】:

大家好,我下载并安装后解决了我的 CPU 上的上述导入张量流错误 Microsoft Visual C++ 2015-2019 可再发行版 (x64) 我的笔记本电脑上的 VC_redist.x64 版本.. 希望这对那里的人有所帮助。

我最初安装了 Anaconda 3.7 python 版本,然后我现在使用 conda 命令提示符 从 Anaconda 成功安装了张量流并且它工作正常。但是在导入 tensorflow 时,我遇到了上述问题。 我什至安装了 msv140dll,但在我下载并运行之前它仍然无法正常工作 VC_redist.x64 版本。在此之后一切正常

【讨论】:

(很遗憾,Linux on DeX 已经停产)【参考方案2】:

我在https://github.com/lhelontra/tensorflow-on-arm/issues/13 上发现了这个问题。简而言之,我错过了aarch64 下的某些预备知识。这是解决方案:

# Preliminaries
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-4.9
sudo apt install --only-upgrade libstdc++6

# Installation similar to Ubuntu on x86_64
sudo apt update
sudo apt install python3-dev python3-pip virtualenv
sudo -H pip3 install --upgrade virtualenv
mkdir /usr/local/tensorflow
virtualenv --system-site-packages -p python3 /usr/local/tensorflow/
source /usr/local/tensorflow/bin/activate
pip3 install --upgrade tensorflow
deactivate

# Test
source /usr/local/tensorflow/bin/activate
$ python3
>>> import tensorflow as tf
>>> hello = tf.constant("Hello, World!")
>>> sess = tf.Session()
>>> print(sess.run(hello))

【讨论】:

以上是关于在aarch64上安装Tensorflow:错误:找不到满足tensorflow要求的版本的主要内容,如果未能解决你的问题,请参考以下文章

aarch64-linux-gnu-g++ 交叉编译为 arm64 错误

RHEL linux下llvm的安装。安装出现的错误如下,怎么解决?或者知道怎么编译,教一下。

如何使用预安装的 libv8 gem 和预编译的 v8 依赖项在 aarch64 上安装 therubyracer?

在麒麟linux上源码安装Postgresql12.5

在 aarch64 Odroid C2 上的 Java 1.8.0_73 上运行 WebStorm-143.382.36 在 libjnidispatch.so 上失败

aarch64-linux-gnu-gcc 交叉编译工具链安装演示