【问题标题】:Not able to import numpy in cygwin无法在 cygwin 中导入 numpy
【发布时间】:2017-07-08 06:58:01
【问题描述】:

我已经使用 cygwin 安装了 numpy,它显示为安装成功。但我无法在我的程序中导入它。

Traceback (most recent call last):
File "pythonpath.py", line 1, in <module>
import numpy
File "/usr/lib/python2.7/site-packages/numpy/__init__.py", line 170, in <module>
from . import add_newdocs
File "/usr/lib/python2.7/site-packages/numpy/add_newdocs.py", line 13, in <module>
from numpy.lib import add_newdoc
File "/usr/lib/python2.7/site-packages/numpy/lib/__init__.py", line 18, in <module>
from .polynomial import *
File "/usr/lib/python2.7/site-packages/numpy/lib/polynomial.py", line 19, in <module>
from numpy.linalg import eigvals, lstsq, inv
File "/usr/lib/python2.7/site-packages/numpy/linalg/__init__.py", line 51, in <module>
from .linalg import *
File "/usr/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 29, in <module>
from numpy.linalg import lapack_lite, _umath_linalg
ImportError: No such file or directory

我查了一下发现lapack_lite.dll_umath_linalg.dll都可以在/lib/python2.7/site-packages/numpy/linalg下找到

当我尝试重新安装 numpy 时,我收到以下消息:

$ pip install numpy
Requirement already satisfied: numpy in /usr/lib/python2.7/site-packages

包也是最新的。

 $ pip install numpy --upgrade
 Requirement already up-to-date: numpy in /usr/lib/python2.7/site-packages

如何在我的程序中导入 numpy?

【问题讨论】:

    标签: python numpy cygwin


    【解决方案1】:

    我只是重新启动了我的系统,错误就消失了!

    【讨论】:

    • 这为我省去了很多麻烦
    【解决方案2】:

    我现在对 Python 3.8 也有同样的情况。不幸的是,重新启动没有帮助。但我找到了解决方案:

    # cygcheck /usr/lib/python3.8/site-packages/numpy/linalg/lapack_lite.cpython-38-x86_64-cygwin.dll
    

    --> cygcheck: track_down: 找不到 cyglap​​ack-0.dll

    解决方案:

    # cp /usr/lib/lapack/cyglapack-0.dll /bin
    

    在 /bin 中找到 cyglap​​ack-0.dll 之后,因为它在 PATH 中。

    【讨论】:

      【解决方案3】:

      $PATH 设置为:

       $ PATH=/usr/lib/lapack:$PATH
      

      在 Cygwin 上的 Python 3.63.8 上测试。

      注意事项:

      1. 此解决方案与 2018 年 Cygwin: import numpy error 中针对 Cygwin 中的 Python 2.7 给出的解决方案相同。

      2. 该帖子中的 OP 有不同的错误消息:回溯的倒数第二行读取 from . import multiarray,而不是 from numpy.linalg import lapack_lite, _umath_linalg

      3. speedolli 的 solution 对我来说失败了,随后出现错误 __all__ += type_check.__all__ // NameError: name 'type_check' is not defined(无论如何复制文件都是个坏主意)。

      4. 重新启动(这个 OP 自己接受的解决方案)对我没有帮助,各种重新安装等也没有帮助。

      更新:

      将新目录放在$PATHend可能更谨慎:

       $ PATH=$PATH:/usr/lib/lapack
      

      我的系统上有两个版本的blas

      $ /bin/ls -la /usr/lib/lapack/
      total 7612
      drwxr-xr-x+ 1 Joe None       0 Jan  8 12:02 .
      drwxr-xr-x+ 1 Joe None       0 Jan  8 14:52 ..
      -rwxr-xr-x  1 Joe None  461331 Nov 29 17:27 cygblas-0.dll
      -rwxr-xr-x  1 Joe None 7308307 Nov 29 17:28 cyglapack-0.dll
      $ /bin/ls -la /usr/bin/cygblas*
      -rwxr-xr-x 1 Joe None 21716499 Dec 21 23:19 /usr/bin/cygblas-0.dll
      

      https://cygwin.com/pipermail/cygwin-announce/2020-July/009613.html 的帖子似乎建议(但我不是专家)我们应该使用 /usr/bin 一个:

      libopenblas 由单个文件组成 /usr/bin/cygblas-0.dll 这将在 PATH 之前的 liblapack0 /usr/lib/lapack/cygblas-0.dll 并改为使用。删除 libopenblas 将恢复 Netlib BLAS 的使用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-11-19
        • 2020-02-08
        • 2018-12-05
        • 2018-06-02
        • 2014-03-31
        • 2017-08-13
        相关资源
        最近更新 更多