J'ai installé matplotlib à l'aide du programme d'installation d'image de disque Mac pour MacOS 10.5 et Python 2.5. J'ai installé numpy puis essayé d'importer matplotlib mais j'ai eu cette erreur: ImportError: numpy 1.1 or later is required; you have 2.0.0.dev8462
. Il semble que cette version 2.0.0.dev8462 serait plus tard que la version 1.1 mais je devine que matplotlib s'est confondu avec le ".dev8462" dans la version. Y at-il une solution de contournement à cela?Impossible d'importer matplotlib
Répondre
Voici le code gênant situé dans Lib/site-packages/matplotlib/__init__.py
dans ma distribution de python sur Windows
nn = numpy.__version__.split('.')
if not (int(nn[0]) >= 1 and int(nn[1]) >= 1):
raise ImportError(
'numpy 1.1 or later is required; you have %s' % numpy.__version__)
Le problème est qu'il exige à la fois le premier à chiffres (séparés par des périodes) pour être supérieure ou égale à 1 et dans votre cas, le deuxième chiffre est un 2. vous pouvez contourner dans un certain nombre de façons, mais une façon est de changer l'instruction if pour
if not ((int(nn[0]) >= 1 and int(nn[1]) >= 1) or int(nn[0]) >= 2):
ou vous pouvez simplement changer à:
if not (float('.'.join(nn[2:])) >= 1.1):
qui pourrait être mieux.
+1. Mais voici une version plus simple: '(int (nn [0]), int (nn [1]))> = (1, 1)'. En fait, les tuples se comparent à ce que l'on appelle "l'ordre du dictionnaire". – EOL
Après le commentaire de Justin ... voici le fichier équivalent pour Linux:
/usr/lib/pymodules/python2.6/matplotlib/__init__.py
modifier sudo que pour fixer la ligne gênant pour: sinon ((int (nn [0])> = 1 et int (nn [1])> = 1) ou int (nn [0])> = 2):
Merci Justin Peel!
Numpy 2.0 n'est pas rétrocompatible avec matplotlib, et il * va * tomber en panne si vous essayez d'exécuter matplotlib dessus. Si vous voulez exécuter numpy 2. *, vous devrez reconstruire chaque paquet qui utilise numpy C API (matplotlib, scipy, etc ...). –