【问题标题】:How do you fix "runtimeError: package fails to pass a sanity check" for numpy and pandas?你如何修复 numpy 和 pandas 的“runtimeError: package failed to pass a sanity check”?
【发布时间】:2021-02-20 12:46:34
【问题描述】:

这是我遇到的错误,据我所知,错误链接上没有任何有用的东西可以解决这个问题。

RuntimeError: 当前的 Numpy 安装 ('...\\venv\\lib\\site-packages\\numpy\\__init__.py') 未能通过 由于 Windows 运行时中的错误导致的健全性检查。

有关更多信息,请参阅此问题:https://developercommunity.visualstudio.com/content/problem/1207405/fmod-after-an-update-to-windows-2004-is-causing-a.html

我尝试了多个版本的 Python(3.8.6 和 3.9.0)以及 numpy 和 pandas。我目前正在使用 PyCharm 来完成这一切。

【问题讨论】:

    标签: python python-3.x windows numpy


    【解决方案1】:

    使用python3.9和numpy1.19.4时出现此错误 所以卸载 numpy1.19.4 并安装 1.19.3 就可以了。


    编辑

    截至 2021 年 1 月 5 日,numpy 版本 1.19.5 已发布,似乎可以解决问题。

    【讨论】:

    • 如何使用 pip 降级?
    • @ShaidaMuhammad pip install numpy==1.19.3
    • 该死的numpy,请在发布前进行测试。这不是测试版
    • 我使用的是 Python 3.7.5,也遇到了这个错误(numpy 1.19.4)。将 numpy 降级到 1.19.3 确实可以防止错误发生。
    • @NoName:我们做了测试,bug 就在 windows 本身。 1.19.3 尝试通过使用解决此问题的不同版本的 OpenBLAS 来解决此问题,但该版本在 linux 上无法正常工作。
    【解决方案2】:

    按照上面其他人的建议,我必须按照以下步骤修复此错误。

    我的环境详细信息:Windows 10 64 位,安装了 Python 3.9.0。我已经安装了 pip 20.3.1

    pip uninstall numpy
    pip install numpy==1.19.3
    

    我正在发布我的 powershell 命令行输出供您参考(可能对某人有用)。

    PS C:\Users\XXXX> pip 卸载 numpy

    找到现有安装:numpy 1.19.4

    卸载 numpy-1.19.4:

    将删除:

    c:\python39\lib\site-packages\numpy-1.19.4.dist-info\*
    
    c:\python39\lib\site-packages\numpy\*
    
    c:\python39\scripts\f2py.exe
    

    继续(是/否)?是的

    成功卸载 numpy-1.19.4

    PS C:\Users\XXXX> pip install numpy==1.19.3

    收集numpy==1.19.3

    正在下载 numpy-1.19.3-cp39-cp39-win_amd64.whl (13.3 MB)

     |████████████████████████████████| 13.3 MB 6.4 MB/s
    

    安装收集的包:numpy

    成功安装numpy-1.19.3

    【讨论】:

      【解决方案3】:

      根据您提供的链接上的讨论,numpy 开发人员回答:

      NumPy 已发布错误修复 1.19.3 以解决此问题。这 错误修复在 Linux 上破坏了其他东西,所以我们不得不恢复修复 发布 1.19.4,但您仍然可以通过 pip install 安装 1.19.3 numpy==1.19.3.

      因此,如果您需要适用于 Linux 和 Windows 的要求,则需要使用 PEP508:

      numpy==1.19.3; platform_system == "Windows"
      numpy>=1.19.4; platform_system == "linux"
      

      【讨论】:

      • 在 linux 上大概可以做numpy>=1.19.4
      • 你应该使用大写的“Linux”来代替:numpy>=1.19.4; platform_system == "Linux"
      • 您可以通过以下代码检查platform_system:import platform;platform.system()参见:python.org/dev/peps/pep-0508/#environment-markers
      【解决方案4】:

      相关链接中提供了解决方法。

      开发者mattip 在他建议的解决方法中提到了以下内容:

      1. 卸载 numpy。(很可能是 1.19.4)
      2. pip install numpy==1.19.3

      这对我有用。

      我的配置:OS-Win10,Anaconda Distribution,python=3.7

      【讨论】:

        【解决方案5】:

        为什么没有人发布 1.19.3 和 1.19.4 之间的区别。

        有问题的numpy初始化代码是:

        def _win_os_check():
            """
            Quick Sanity check for Windows OS: look for fmod bug issue 16744.
            """
            try:
                a = arange(13 * 13, dtype= float64).reshape(13, 13)
                a = a % 17  # calls fmod
                linalg.eig(a)
            except Exception:
                msg = ("The current Numpy installation ({!r}) fails to "
                        "pass a sanity check due to a bug in the windows runtime. "
                        "See this issue for more information: "
                        "https://developercommunity.visualstudio.com/content/problem/1207405/fmod-after-an-update-to-windows-2004-is-causing-a.html")
                raise RuntimeError(msg.format(__file__)) from None
        
        if sys.platform == "win32" and sys.maxsize > 2**32:
            _win_os_check()
        
        del _win_os_check
        

        此代码段在 1.19.3 中不存在;这是唯一的区别。

        【讨论】:

        • pip 安装的 1.19.3 和 1.19.4 轮子之间还有一个更重要的区别 - 它们构建时使用的 OpenBLAS 版本。如果您从 numpy 1.19.4 中删除该代码,那么您将得到一个 numpy,它会产生不正确的结果和/或随机崩溃,而不是 numpy 不导入。正确的解决方法是切换到 1.19.3,其中包含 OpenBLAS 的“安全”版本。
        【解决方案6】:

        我使用的是 Python 3.7,无论如何这里建议的相同解决方案对我有帮助。

        pip install numpy==1.19.3
        

        实际上通知https://developercommunity.visualstudio.com/content/problem/1207405/fmod-after-an-update-to-windows-2004-is-causing-a.html 的链接显示了给定的解决方案。这似乎是 Visual Studio 中的一个错误,至今仍未解决。

        【讨论】:

        • 从技术上讲,这是 UCRT(通用可再发行 C/C++ 运行时)中的错误,而不是 Visual Studio 本身。
        【解决方案7】:

        这是numpy 1.19.4 的一个错误,所有 python 版本都失败了。使用以前的版本解决问题,所以通过终端:

        pip install numpy==1.19.3
        

        【讨论】:

        • 1.9.3 无法在我的 Windows 上安装
        • @JariTurkia 现在是 1.19.3。
        【解决方案8】:

        回滚到 numpy 1.19.3 在 python 3.8.6 上为我工作

        【讨论】:

          【解决方案9】:

          只需安装numpy==1.19.3 我正在使用 python 3.9

          【讨论】:

            猜你喜欢
            • 2022-12-15
            • 2021-09-06
            • 2019-11-16
            • 2022-12-26
            • 2022-11-08
            • 2021-09-13
            相关资源
            最近更新 更多