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 wheel
和pip 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/...<some more directories>...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
一旦设置了python3
和pip3
,您就可以运行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的主要内容,如果未能解决你的问题,请参考以下文章
NULL指针区域(NULL定义为0-65535之间的任何数都可以)