1
votes

Python3.9 malloc: impossible d'allouer l'erreur de région 3

J'utilise Python3.9 et j'ai commencé à écrire un script simple pour façonner certaines données, je l'ai testé après avoir écrit une seule ligne et j'obtiens cette erreur:

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

Voici le script Python:

Hello
Hello
Hello

Le fichier que je lis est:

import pandas as pd, numpy as np

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

print(df)

Je suis sur MacO.

Les détails de mon installation Python sont:

 $ 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

J'ai installé des pandas en utilisant pip install wheel et pip install pandas .

J'ai également de la mémoire libre, j'ai réinstallé mon Python et je rencontre toujours cette erreur.

Je suis un débutant en Python et je ne comprends vraiment pas le message d'erreur, j'ai essayé de chercher mais rien n'a fonctionné ...

Des idées sur ce que je fais mal?

Merci beaucoup


2 commentaires

J'ai eu la même erreur (OSX et Python@3.9). Ma seule résolution était de revenir à Python@3.8. Je pense que cela est en cours d' élaboration - bugs.python.org/issue40928


Si vous effectuez une analyse de données, envisagez de télécharger Anaconda. Fait tout le travail pour vous en termes de téléchargement de pandas et de numpy et de toutes les dépendances et de les emballer tous ensemble.


3 Réponses :


1
votes

Le même problème était pour moi lorsque j'installe python3.8 / 3.9 à l'aide de brew. J'ai contourné ce problème en supprimant la version brew de python et en installant python à partir de python.org/mac-osx


0 commentaires

0
votes

J'avais également des problèmes pour faire fonctionner numpy sur ma machine.

Le contexte

Ma configuration est MacOS Big Sur exécutant la ligne de commande zsh en utilisant l'extension oh-my-zsh . J'avais des problèmes avec l'importation de numpy depuis que je suis passé de Catalina à Big Sur.

J'avais quelques versions de Python3 installées sur ma machine:

  • Python3.9 (breuvage)
  • Python3.8 (breuvage)
  • Python3.8 (de python.org je pense)

avec l'alias python3 pointant vers l'une des versions de brew de Python, au moins selon la sortie de l'exécution de la commande which python3 . Je crois que ces versions de brew ont été installées automatiquement en tant que dépendances pour un autre programme.

Comme j'avais plusieurs versions de Python installées, je crois que j'avais plusieurs chemins pointant vers le même alias python / python3 . Pour résoudre ce problème, j'ai d'abord supprimé tous les anciens chemins Python qui auraient pu être créés automatiquement chaque fois que j'installais une nouvelle version de Python (soit via brew ou version officielle).

Mes pas

J'ai pris les mesures suivantes pour résoudre mon problème supposé. Si votre problème ressemble au mien, cela peut être utile!

Partie A. Effacer .bashrc et .zshrc

  1. Tapez dans la ligne de commande: vi ~/.bashrc et supprimez tout ce qui contient quelque chose comme export PATH=/usr/...<some more directories>...python:%PATH .
  2. Tapez dans la ligne de commande: vi ~/.zshrc et suivez le même processus que précédemment.

Partie B. Suppression de brew -installed versions de Python

Ensuite, j'ai supprimé toutes les versions de python installées par brew . Comme j'avais à la fois Python3.9 et Python3.8, j'ai utilisé les commandes suivantes pour les désinstaller via brew :

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

Partie C.Installation d'une nouvelle version de Python

Une fois que les brew versions de Python ont été désinstallés, exécutant la commande which python3 maintenant a la version Python3.8 j'avais installé à partir python.org . Comme je voulais exécuter une version différente de Python, je suis allé sur la page de téléchargement de python pour Mac OS X et j'ai téléchargé le programme d' installation de Mac OS X 64 bits .

Après avoir fait cela et redémarré mon terminal, l'exécution de la commande which python3 pointait maintenant vers la dernière version de Python que j'ai installée.

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

Vous devez également exécuter which pip3 pour confirmer que pip3 est pip3 à la bonne version de pip à utiliser pour Python3.9, ce qui devrait être le cas si vous installez Python via le programme d'installation.

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

Partie numpy

Une fois que python3 et pip3 sont configurés, vous pouvez exécuter pip3 install numpy , qui devrait installer une nouvelle version de numpy pour Python3.9. Ensuite, l'exécution d'une instruction d'importation pour numpy (telle que import numpy as np ) à l'intérieur d'un fichier .py devrait fonctionner sans problème.

Conclusion

Je suis sûr que ce n'est pas la meilleure façon de gérer différentes versions de Python, mais cela a fonctionné pour moi et j'espère que cela fonctionnera également pour vous. Dans l'ensemble cependant, cela peut être une bonne solution de contournement pour le moment jusqu'à ce que quelqu'un trouve un meilleur moyen ou si numpy corrige cela dans une future mise à jour.

J'ai entendu dire qu'utiliser pyenv et pipenv sont de bons moyens de gérer plusieurs environnements et versions de Python. Cela peut vous être utile. Bonne chance!

Edit: Ajout d'une section sur l'aliasing pip3 et d'une section sur le résultat après l'installation de numpy . Edit: Ajout d'informations sur l'origine des multiples versions de Python que j'avais sur ma machine.


0 commentaires

1
votes

brew n'est pas encore stable pour MacOS BIG SUR à ce jour. J'ai mis à niveau vers Python 3.9 et j'ai rencontré le même problème avec les allocations de mémoire numpy, donc je suis revenu comme ceci:

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

de cette façon, je suis de retour sur Python 3.8.6 qui fonctionne bien


0 commentaires