首页 > 解决方案 > pip install numpy 退出构建但出现错误但仍会安装

问题描述

我想在我的 virtualenv 中使用 fedora30 和 python 3.7.3 在树莓派上安装 numpy。我输入pip install numpy,过了一会儿它会产生一个巨大的错误消息,其中一部分似乎与 lapack/blas 相关,但仍然安装了某种 numpy。我不确定在这种情况下我是否可以信任任何 numpy 结果,并且希望获得有关使构建错误消失的建议。包含sys/endian.h.

我安装了相同的系统包,这些系统包与我通常在使用 fedora30 的 x64 计算机上安装的系统包相同,在那里我通常可以pip install numpy毫无问题地运行。在覆盆子上做这件事对我来说是新的。

我试图寻找一个提供endian.h:的包dnf provides endian.hdnf provides sys/endian.h但没有运气。

在我的 virtualenv 中运行pip install numpy会导致 stderr 上出现非常大的错误消息,并且 stdout 上会出现以下文本:

    收集 numpy
      下载 https://files.pythonhosted.org/packages/b6/d6/be8f975f5322336f62371c9abeb936d592c98c047ad63035f1b38ae08efe/numpy-1.17.3.zip (6.4MB)
    为收集的包构建轮子:numpy
      numpy(setup.py)的构建轮:开始
      numpy(setup.py)的构建轮:仍在​​运行...
      numpy(setup.py)的构建轮:仍在​​运行...
    ...
      numpy(setup.py)的构建轮:仍在​​运行...
      numpy(setup.py)的构建轮:以状态“错误”完成
      为 numpy 运行 setup.py clean
    无法构建 numpy
    安装收集的包:numpy
        为 numpy 运行 setup.py install: 开始
        为 numpy 运行 setup.py install:仍在运行...
    ...
        为 numpy 运行 setup.py install:仍在运行...
        为 numpy 运行 setup.py install:完成状态为“完成”
    成功安装numpy-1.17.3

错误信息为189352字节长,我希望在下面传达相关信息:

      错误:命令出错,退出状态为 1:
       命令:/home/examiner/projects/rekenlab_test/venv/rekenlab/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-uke3fxog/numpy/setup.py'"'"'; __file__='"'"'/tmp/pip-install-uke3fxog/numpy/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__) ;code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(代码,__file__,'"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-q3wtyuey --python-tag cp37
           cwd:/tmp/pip-install-uke3fxog/numpy/
      完整输出(2777 行):
      从 numpy 源目录运行。
      blas_opt_info:
      blas_mkl_info:
      自定义 UnixCCompiler
        在 ['/home/examiner/projects/rekenlab_test/venv/rekenlab/lib', '/usr/local/lib64', '/usr/local/lib', '/usr/lib64', '/ 中找不到库 mkl_rt usr/lib', '/usr/lib/']
        无法使用

      幸福信息:
      自定义 UnixCCompiler
        在 ['/home/examiner/projects/rekenlab_test/venv/rekenlab/lib', '/usr/local/lib64', '/usr/local/lib', '/usr/lib64', '/ usr/lib', '/usr/lib/']
        无法使用

    ...

      /bin/sh: svnversion: 找不到命令

    ...

      atlas_3_10_threads_info:
      设置 PTATLAS=ATLAS
      自定义 UnixCCompiler
        在 /home/examiner/projects/rekenlab_test/venv/rekenlab/lib 中找不到库 lapack_atlas
      自定义 UnixCCompiler
        库 tatlas,在 /home/examiner/projects/rekenlab_test/venv/rekenlab/lib 中找不到 tatlas

    ...

      自定义 UnixCCompiler
        库 tatlas,在 /usr/lib/ 中找不到 tatlas
      
        无法使用

    ...

      找不到可执行的 g95
      自定义 PathScaleFCompiler
      找不到可执行路径f95
      自定义 NAGFORCompiler
      找不到可执行的 nagfor
      不知道如何在平台 'posix' 上编译 Fortran 代码
      C 编译器:gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC

    ...

      编译选项:'-Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core /src/npysort -I/home/examiner/installed/python3.7.3/usr/local/include/python3.7m -c'
      gcc:_configtest.c
      _configtest.c:1:10:致命错误:sys/endian.h:没有这样的文件或目录
          1 | #include <sys/endian.h>
            | ^~~~~~~~~~~~~~
      编译终止。
      失败。
      删除:_configtest.c _configtest.o
      C 编译器:gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC

    ...

      _configtest.c:1:10:致命错误:emmintrin.h:没有这样的文件或目录
          1 | #include <emmintrin.h>
            | ^~~~~~~~~~~~~
    ...
      numpy/linalg/lapack_lite/f2c_blas.c:在函数“zgemm_”中:
      numpy/linalg/lapack_lite/f2c_blas.c:15670:20:警告:变量 'ncola' 已设置但未使用 [-Wunused-but-set-variable]
      15670 | 静态整数 ncola;
            | ^~~~~
      gcc:numpy/linalg/lapack_lite/f2c_config.c
      gcc:numpy/linalg/lapack_lite/f2c.c
      错误:命令“gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Inumpy/core/include -Ibuild/src.linux-aarch64-3.7/numpy/core/包括/numpy -Inumpy/core/src/common -Inumpy/core/src -Inumpy/core -Inumpy/core/src/npymath -Inumpy/core/src/multiarray -Inumpy/core/src/umath -Inumpy/core/ src/npysort -I/home/examiner/installed/python3.7.3/usr/local/include/python3.7m -Ibuild/src.linux-aarch64-3.7/numpy/core/src/common -Ibuild/src.linux- aarch64-3.7/numpy/core/src/npymath -Ibuild/src.linux-aarch64-3.7/numpy/core/src/common -Ibuild/src.linux-aarch64-3.7/numpy/core/src/npymath -c numpy /linalg/lapack_lite/f2c_d_lapack.c -o build/temp.linux-aarch64-3.7/numpy/linalg/lapack_lite/f2c_d_lapack.o -MMD -MF build/temp.linux-aarch64-3.7/numpy/linalg/lapack_lite/f2c_d_lapack .od" 失败,退出状态为 1
      --------------------------------------
      错误:numpy 的构建轮子失败
      错误:命令出错,退出状态为 1:
       命令:/home/examiner/projects/rekenlab_test/venv/rekenlab/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-uke3fxog/numpy/setup.py'"'"'; __file__='"'"'/tmp/pip-install-uke3fxog/numpy/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__) ;code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(代码, __file__, '"'"'exec'"'"'))' clean --all
           cwd:/tmp/pip-install-uke3fxog/numpy
      完整输出(10 行):
      从 numpy 源目录运行。

      不支持 `setup.py clean`,请改用以下选项之一:

        - `git clean -xdf`(清理所有文件)
        - `git clean -Xdf`(清除所有版本文件,不触及
                            未检入 git repo 的文件)

      如果必须(不支持),请将 `--force` 添加到您的命令中以使用它。

      --------------------------------------
      错误:清理 numpy 的构建目录失败

pip声明似乎已经安装了一些看起来像是 numpy 的东西:

    $蟒蛇
    Python 3.7.3(默认,2019 年 10 月 15 日,15:38:35)
    [GCC 9.2.1 20190827 (Red Hat 9.2.1-1)] 在 Linux 上
    输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
    >>> 将 numpy 导入为 np
    >>> a = np.array((1,2,3))
    >>> 一 + 1
    数组([2, 3, 4])

问题:如果 pip 自己的构建失败,最终会安装什么?我可以依靠这种状态下的 numpy 结果吗?我该怎么做才能使构建错误消失?

我安装了我通常在 x64 计算机上安装的相同系统包,但也许 raspberry-pi 需要显式安装其他包?

感谢您的任何建议!

标签: numpypipraspberry-pifedoralapack

解决方案


推荐阅读