【发布时间】:2020-01-31 01:26:07
【问题描述】:
上下文
我正在尝试在我的 Raspberry Pi 上安装 TensorFlow,但 numpy 无法正常工作。
我的 RPi 安装是来自 microSD 的全新安装。我正在运行 Raspbian Buster,除了sudo apt update && sudo apt upgrade 之外,我之前没有在这个系统上做过任何事情,安装 python3.5,并尝试使用python -m pip install <tensorflow>.whl 安装TensorFlow wheel file(最后一个)。
我正在使用一个干净的 virtualenv 和 pip 来安装 python 包(pip install ... 和 python -m pip install ... 在环境中)。安装没有错误或警告;在我尝试使用/导入 numpy 之前,一切看起来都很好。
标题中提到的错误如下:
Python 3.5.4 (default, Sep 5 2017, 18:32:10)
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pi/tensorflow/lib/python3.5/site-packages/numpy/__init__.py", line 152, in <module>
from . import random
File "/home/pi/tensorflow/lib/python3.5/site-packages/numpy/random/__init__.py", line 181, in <module>
from . import _pickle
File "/home/pi/tensorflow/lib/python3.5/site-packages/numpy/random/_pickle.py", line 1, in <module>
from .mtrand import RandomState
ImportError: /home/pi/tensorflow/lib/python3.5/site-packages/numpy/random/mtrand.cpython-35m-arm-linux-gnueabihf.so: undefined symbol: PyFPE_jbuf
复制
我可以通过使用 python3.5、pip install numpy 或 python -m pip ... 启动一个干净的 virtualenv,然后尝试像上面一样导入 numpy 来持续重现这一点。
尝试
我看到的与此相关的大多数其他问题都与 cython 安装路径或计算机上有另一个 numpy 有关,所以这是我到目前为止所做的:
-
卸载了pi上默认的numpy安装
-
安装 cython,重新安装 numpy
-
使用
pip install --no-cache-dir numpy安装numpy
注意
numpy 安装适用于 python3.7 virtualenv
更新
我遵循 phd 的评论并尝试从源代码构建(git clone ...、cd numpy、python setup.py all in the virtualenv on python3.5)。这导致了相同的缺失符号,尽管在不同的地方。它看起来与 Cython 相关?
Running from numpy source directory.
Cythonizing sources
Processing numpy/random/bounded_integers.pxd.in
Processing numpy/random/bounded_integers.pyx.in
Traceback (most recent call last):
File "/usr/lib/python3.5/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/pi/tensorflow/lib/python3.5/site-packages/cython.py", line 17, in <module>
main(command_line = 1)
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/Main.py", line 858, in main
result = compile(sources, options)
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/Main.py", line 780, in compile
return compile_multiple(source, options)
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/Main.py", line 750, in compile_multiple
context = options.create_context()
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/Main.py", line 597, in create_context
self.cplus, self.language_level, options=self)
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/Main.py", line 80, in __init__
from . import Builtin, CythonScope
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/CythonScope.py", line 5, in <module>
from .UtilityCode import CythonUtilityCode
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/UtilityCode.py", line 3, in <module>
from .TreeFragment import parse_from_strings, StringParseContext
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/TreeFragment.py", line 17, in <module>
from .Visitor import VisitorTransform
File "Cython/Compiler/Visitor.py", line 17, in init Cython.Compiler.Visitor
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/ExprNodes.py", line 4724, in <module>
class SliceIndexNode(ExprNode):
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/ExprNodes.py", line 4922, in SliceIndexNode
"SliceObject", "ObjectHandling.c", context={'access': 'Get'})
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/Code.py", line 404, in load
return cls(**kwargs)
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/Code.py", line 648, in __init__
proto = sub_tempita(proto, context, file, name)
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Compiler/Code.py", line 640, in sub_tempita
from ..Tempita import sub
File "/home/pi/tensorflow/lib/python3.5/site-packages/Cython/Tempita/__init__.py", line 4, in <module>
from ._tempita import *
ImportError: /home/pi/tensorflow/lib/python3.5/site-packages/Cython/Tempita/_tempita.cpython-35m-arm-linux-gnueabihf.so: undefined symbol: PyFPE_jbuf
在此之后它只是告诉我在 setup.py 中运行 cythonize 失败。
【问题讨论】:
-
为什么我看到
python3.5有误?当你声称你已经安装了python3.7! -
您安装的二进制轮似乎与系统库不兼容。尝试从源代码编译
numpy。 -
@Mohsen_Fatemi 我正在尝试在 python3.5 上安装 numpy,因为给定的 TensorFlow 轮子适用于 python3.5
标签: python python-3.x numpy pip