Python3.9内存分配错误:无法分配区域错误3。

8

我正在使用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。我认为这个问题正在被处理 - https://bugs.python.org/issue40928 - Colin
如果你在进行数据分析,考虑下载Anaconda。它会为你完成所有的繁琐工作,包括下载pandas、numpy和其他所有依赖项,并将它们全部打包在一起。 - Linden
4个回答

3

截至目前,brew在MacOS BIG SUR上尚不稳定。我升级到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版本,没有遇到任何问题。 - Deepkamal

2

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


2
我在我的机器上也遇到了使用 numpy 的问题。

背景

我的系统是运行在 MacOS Big Sur 上,使用 oh-my-zsh 扩展的 zsh 命令行。自从我升级到 Big Sur 以后,我就一直无法导入 numpy

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

  • Python3.9 (brew)
  • Python3.8 (brew)
  • Python3.8(来自 python.org

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

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

我的步骤

我采取了以下步骤来解决我的问题。如果你的问题听起来与我的类似,这可能会有所帮助!

第一部分. 清除 .bashrc.zshrc

  1. 在命令行中输入: vi ~/.bashrc 并删除包含类似于 export PATH=/usr/...<一些其他目录>...python:%PATH 的任何内容。
  2. 在命令行中输入:vi ~/.zshrc并按照以前的相同过程操作。

第二部分. 删除通过 brew 安装的 Python 版本

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

  1. brew uninstall python@3.9
  2. brew uninstall python@3.8

第三部分. 安装全新的 Python 版本

一旦使用brew安装的Python版本被卸载后,运行命令which python3指向了我从python.org安装的Python3.8版本。由于我想运行不同版本的Python,在Mac OS X的Python下载页面上下载了Mac OS X 64位安装程序。完成之后重新启动终端,运行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

第四部分 安装 numpy

一旦安装好python3pip3,您可以运行pip3 install numpy,这将为Python3.9安装一个新版本的numpy。然后,在.py文件中运行import numpy as npnumpy导入语句应该没有问题。

结论

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

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

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

更新:在这个“修复”之后,我一直遇到其他库的问题,比如OpenCV,所以请注意它可能不是完美的。相反,我卸载了我机器上所有版本的Python,并通过Conda安装了Python。从那时起就没有出现任何问题了! - lecheboludo

1

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

我注意到你安装了版本为1.19.2的numpy,而我安装的是1.19.4,将numpy升级到1.20.1后,问题得以解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接