Python3.9 malloc:无法分配区域错误3

Posted

技术标签:

【中文标题】Python3.9 malloc:无法分配区域错误3【英文标题】:Python3.9 malloc: can't allocate region error 3 【发布时间】:2021-02-08 07:11:35 【问题描述】:

我正在使用 Python3.9,我开始编写一个简单的脚本来塑造一些数据,我只写了一行代码就对其进行了测试,我得到了这个错误:

 $ Python3.9 Shape_Response.py 
Python(2857,0x1061635c0) malloc: can't allocate region
*** mach_vm_map(size=18446744072478715904) failed (error code=3)
Python(2857,0x1061635c0) malloc: *** set a breakpoint in malloc_error_break to debug
init_dgelsd failed init
Traceback (most recent call last):
  File "/Users/dominik/Desktop/Google Analytics API/Shape_Response.py", line 1, in <module>
    import pandas as pd, numpy as np
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pandas/__init__.py", line 11, in <module>
    __import__(dependency)
  File "/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/numpy/__init__.py", line 286, in <module>
    raise RuntimeError(msg)
RuntimeError: Polyfit sanity test emitted a warning, most likely due to using a buggy Accelerate backend. If you compiled yourself, see site.cfg.example for information. Otherwise report this to the vendor that provided NumPy.
RankWarning: Polyfit may be poorly conditioned

这是 Python 脚本:

import pandas as pd, numpy as np

df = pd.read_csv('test.txt', delimiter = "\n", header=None)

print(df)

我正在阅读的文件是:

Hello
Hello
Hello

我在 MacOs 上。

我的 Python 安装详情如下:

dominik at Dominiks-MacBook-Pro in Google Analytics API
$ which python
/usr/bin/python

dominik at Dominiks-MacBook-Pro in Google Analytics API
$ python --version
>>> Python 3.9.0

dominik at Dominiks-MacBook-Pro in Google Analytics API
$ pip --version
>>> pip 20.2.4 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)

dominik at Dominiks-MacBook-Pro in Google Analytics API
$ pip list
>>> Package         Version
>>> --------------- -------
>>> numpy           1.19.2
>>> pandas          1.1.3
>>> pip             20.2.4
>>> python-dateutil 2.8.1
>>> pytz            2020.1
>>> setuptools      49.2.1
>>> six             1.15.0
>>> wheel           0.35.1

我使用pip install wheelpip install pandas 安装了pandas。

我还有可用内存,我重新安装了我的 Python,但仍然遇到此错误。

我是Python初学者,我真的不明白错误信息,我尝试搜索但没有任何效果......

对我做错了什么有任何想法吗?

非常感谢

【问题讨论】:

我遇到了同样的错误(OSX 和 Python@3.9)。我唯一的解决办法是降级到 Python@3.8。我认为它正在处理中 - bugs.python.org/issue40928 如果您要进行数据分析,请考虑下载 Anaconda。在下载 pandas 和 numpy 以及所有依赖项并将它们打包在一起方面为您完成所有工作。 【参考方案1】:

到目前为止,对于 MacOS BIG SUR,brew 还不稳定。 我升级到 Python 3.9 并面临与 numpy 内存分配相同的问题,所以我像这样回滚:

brew link --overwrite python@3.8
  Linking /usr/local/Cellar/python@3.8/3.8.6_2... 25 symlinks created

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/python@3.8/bin:$PATH"' >> ~/.zshrc

这样我又回到了 Python 3.8.6,它工作得很好

【讨论】:

更新 - 现在可以使用了,目前在 3.9 上没有任何问题。【参考方案2】:

当我使用 brew 安装 python3.8/3.9 时,我遇到了同样的问题。 我通过删除 brew 版本的 python 并从 python.org/mac-osx 安装 python 解决了这个问题

【讨论】:

【参考方案3】:

我也遇到了让numpy 在我的机器上工作的问题。

上下文

我的设置是使用 oh-my-zsh 扩展名运行 zsh 命令行的 MacOS Big Sur。自从我从 Catalina 升级到 Big Sur 后,我在导入 numpy 时遇到了问题。

我的机器上安装了几个版本的 Python3:

Python3.9(酿造) Python3.8(酿造) Python3.8(我认为来自python.org)

python3 别名指向 Python 的 brew 版本之一,至少根据执行命令 which python3 的输出。我相信这些brew 版本是作为另一个程序的依赖项自动安装的。

由于我安装了多个版本的 Python,我相信我有多个路径指向同一个 python/python3 别名。为了解决这个问题,我首先删除了任何旧的 Python 路径,这些路径可能在我安装新版本的 Python(通过 brew 或官方发布)时自动创建。

我的步骤

我采取了以下步骤来解决我认为的问题。如果您的问题与我的相似,这可能会有所帮助!

A 部分。清除 .bashrc.zshrc

    在命令行中输入:vi ~/.bashrc 并删除任何包含 export PATH=/usr/...&lt;some more directories&gt;...python:%PATH 行的内容。 在命令行中输入:vi ~/.zshrc 并按照与之前相同的过程进行操作。

B 部分。删除brew 安装的 Python 版本

接下来,我删除了brew 安装的所有python 版本。由于我同时拥有Python3.9和Python3.8,所以我使用以下命令通过brew卸载它们:

    brew uninstall python@3.9 brew uninstall python@3.8

C 部分。安装新版本的 Python

一旦brew 版本的Python 被卸载,运行命令which python3 现在指向我从python.org 安装的Python3.8 版本。因为我想运行不同版本的 Python,所以我去了python downloads page for Mac OS X 并下载了Mac OS X 64-bit installer。

这样做并重新启动我的终端后,运行which python3 命令现在指向我安装的最新版本的 Python。

/Library/Frameworks/Python.framework/Versions/3.9/bin/python3

您还应该运行which pip3 以确认pip3 是用于Python3.9 的正确版本的pip 的别名,如果通过安装程序安装Python 应该是这种情况。

/Library/Frameworks/Python.framework/Versions/3.9/bin/pip3

D部分。安装numpy

一旦设置了python3pip3,您就可以运行pip3 install numpy,它应该为Python3.9 安装一个新版本的numpy。然后,在.py 文件中运行numpy(例如import numpy as np)的导入语句应该没有问题。

结论

我确信这不是处理不同版本 Python 的最佳方式,但它对我有用,我希望它也对你有用。不过总体而言,在有人找到更好的方法或numpy 在未来的更新中修复此问题之前,这可能是目前一个很好的解决方法。

我听说使用pyenv 和pipenv 是处理多种环境和Python 版本的好方法。这可能对您有帮助。祝你好运!

编辑:添加了关于pip3 别名的部分和关于安装numpy 后结果的部分。 编辑:添加了有关我机器上的多个 Python 版本可能来自何处的信息。

【讨论】:

更新:在这个“修复”之后,我不断遇到其他库的问题,例如OpenCV,所以请注意它可能并不完美。相反,我卸载了我机器上所有版本的 Python,并通过Conda 安装了 Python。从那以后没有问题!【参考方案4】:

我刚刚在使用asdf 安装的 Python 3.9.2 上遇到了同样的问题。

我注意到您安装了 1.19.2 版 numpy,我安装了 1.19.4 并升级到 numpy 1.20.1 解决了我的问题。

【讨论】:

以上是关于Python3.9 malloc:无法分配区域错误3的主要内容,如果未能解决你的问题,请参考以下文章

重新分配错误但不是malloc?

NULL指针区域(NULL定义为0-65535之间的任何数都可以)

malloc的内存分配原理

如果 Malloc 无法分配 X 字节,我是使用 Realloc 还是再次使用 Malloc? C++

内存分配(malloc)的过程

malloc中的电子围栏段错误