Numpy-Installation scheitert

Probleme bei der Installation?
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

Hi,
wenn ich versuche auf win xp und python 2.4.4 numpy zu installieren
C:\Python24\Lib\site-packages\numpy>python setup.py install
Warning: Assuming default configuration (distutils\command/{setup_command,setup}
.py was not found)
Appending numpy.distutils.command configuration to numpy.distutils
Ignoring attempt to set 'name' (from 'numpy.distutils' to 'numpy.distutils.comma
nd')
Warning: Assuming default configuration (distutils\fcompiler/{setup_fcompiler,se
tup}.py was not found)
Appending numpy.distutils.fcompiler configuration to numpy.distutils
Ignoring attempt to set 'name' (from 'numpy.distutils' to 'numpy.distutils.fcomp
iler')
non-existing path in 'distutils': 'site.cfg'
Appending numpy.distutils configuration to numpy
Ignoring attempt to set 'name' (from 'numpy' to 'numpy.distutils')
Appending numpy.testing configuration to numpy
Ignoring attempt to set 'name' (from 'numpy' to 'numpy.testing')
Warning: Assuming default configuration (f2py\lib\parser/{setup_parser,setup}.py
was not found)
Appending numpy.f2py.lib.parser configuration to numpy.f2py.lib
Ignoring attempt to set 'name' (from 'numpy.f2py.lib' to 'numpy.f2py.lib.parser'
)
Appending numpy.f2py.lib configuration to numpy.f2py
Ignoring attempt to set 'name' (from 'numpy.f2py' to 'numpy.f2py.lib')
F2PY Version 2_3650
Appending numpy.f2py configuration to numpy
Ignoring attempt to set 'name' (from 'numpy' to 'numpy.f2py')
Ignoring attempt to set 'version' (from None to '2_3650')
Traceback (most recent call last):
File "setup.py", line 29, in ?
setup(configuration=configuration)
File "C:\Python24\Lib\site-packages\numpy\distutils\core.py", line 144, in set
up
config = configuration()
File "setup.py", line 9, in configuration
config.add_subpackage('core')
File "C:\Python24\Lib\site-packages\numpy\distutils\misc_util.py", line 765, i
n add_subpackage
caller_level = 2)
File "C:\Python24\Lib\site-packages\numpy\distutils\misc_util.py", line 748, i
n get_subpackage
caller_level = caller_level + 1)
File "C:\Python24\Lib\site-packages\numpy\distutils\misc_util.py", line 695, i
n _get_configuration_from_setup_py
config = setup_module.configuration(*args)
File "C:\Python24\Lib\site-packages\numpy\core\setup.py", line 31, in configur
ation
open(generate_umath_py,'U'),generate_umath_py,
IOError: [Errno 2] No such file or directory: 'core\\code_generators\\generate_u
math.py'

C:\Python24\Lib\site-packages\numpy>
erhalte ich diesen fehler hier.
Nochmal zum Verständnis: In meiner Numpyanleitung steht, dass ich die Funktionen mitells import Numeric im Python aufrufen muss (ich will arrays usw benutzen). Das macht doch keinen Sinn? Wieso benutze ich nicht import numpy?
Python rockt.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Numeric und NumPy sind zwei verschiedene Module. Ohne es jetzt genau im Kopf zu haben könnte es sein, dass NumPy ein `import Numeric` aus Gründen der Abwärtskompatibilität zum älteren Numeric gestattet.
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

Ok, das kann wohl sein. Dann ist die Dokumentation zu Numpy aber sehr irreführend. :roll:

Ich habe nun mal alles (numpy, numeric, numarray) installiert und mit "from Numeric import *" Erfolg gehabt. Nun funktionieren "Befehle" wie array, zeros oder .shape - immerhin. Vielleicht sollte ich nun nach try and error wieder Komponenten deinstallieren, was meint ihr?

Viele Grüße
Michi
Python rockt.
BlackJack

Die Namensgebung ist ziemlich verworren. Bei Numeric sprach man damals auch von Numpy, womit aber nicht das aktuelle `numpy`-Modul gemeint war. Die Doku ist wahrscheinlich noch für Numeric. Das aktuellste Modul ist jedenfalls `numpy`.
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

Hmm, wo gibts denn die aktuelle! Doku zu Numpy!, hmm?
Python rockt.
BlackJack

Die aktuelle kann man kaufen. Ansonsten tut's auch die alte plus Fragen auf der Mailingliste vom Projekt.
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

Hallo,
hilfreich wäre es noch, wenn ich die Version von einem Modul im Python ausgeben lassen könnte. Also, ich lade erste etwas via "import modul_name" und möchte dann die Version von diesem Modul wissen, geht das?

Danke und Grüße
Python rockt.
BlackJack

Da es keinen generellen Mechanismus gibt um Versionsinformationen an Module oder Packages zu binden, geht das nur wenn die Programmierer da selbst etwas vorsehen. Es gibt einige Programmierer die ein Attribut `__version__` definieren. Bei `numarray` und `numpy` gibt's das:

Code: Alles auswählen

In [27]: numarray.__version__
Out[27]: '1.5.1'

In [28]: numpy.__version__
Out[28]: '1.0rc1'
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

Vielen Dank für Eure Tipps. Leider funktioniert es nun nach einigen Umstellungen wieder wegen Numeric nicht:

Code: Alles auswählen

>>> from Numeric import *
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "C:\Python24\lib\site-packages\Numeric\Numeric.py", line 124, in ?
    arrayrange = multiarray.arange
NameError: name 'multiarray' is not defined
Weiss nochmal wer Rat? Danke.
Python rockt.
BlackJack

Dann ist `Numeric` irgendwie nicht richtig installiert. Musst Du denn unbedingt `Numeric` benutzen? Das ist das älteste von den drei Packages und wird nicht mehr weiterentwickelt. Aktuell ist `numpy`.
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

Ich würde gerne Numpy statt Numeric benutzen, allerdings bekomme ich dann einen Haufenfehlermeldungen bei dem Programmcode, welchen in gerade bearbeite.

"No module multiarray" oder etwas wie "global name multiarray not found"...

Es werden eben im Code Befehle wie take, array, zeros, put, where usw... rund um Arrays benutzt, deswegen brauche ich ja so ein Package. Einen Weg das alles sauber undeinfach auf Numpy umzustellen, habe ich trotz intensiver Recherche nicht gefunden. Irgendwie weiss es ja auch niemand genau zu erklären, wo die Unterschiede liegen, wie installiert werden muss oder was umgestellt werden muss und wer und was jetzt mit Numeric funktioniert und was mit Numpy.

Soll nicht zu motzig klingen, schon gar nicht in deine Richtung, ich bin ja für jede kleine Antwort sehr dankbar!!! :)

Ach ja: import numeric geht aber, komisch oder?

Grüße
Michi
Python rockt.
BlackJack

Was für ein Programm bearbeitest Du denn und was genau möchte dieses Programm von den drei Packages haben? Das ist es was Du dann installieren musst.

Wo kommt `numeric` her? Ich habe alle drei Packages installiert kann aber `numeric` nicht importieren:

Code: Alles auswählen

In [74]: import numeric
---------------------------------------------------------------------------
exceptions.ImportError       Traceback (most recent call last)

/home/new/<ipython console>

ImportError: No module named numeric

In [75]: import Numeric

In [76]: import numarray

In [77]: import numpy
Was enthält Dein `numeric` denn?
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

Sorry, mit "numeric" ist natürlich "Numeric" gemeint, da sollte ich auf Tippfehler achten, Sorry dafür.
Mein Programm benötigt den Umgang mit Arrays, daher wird irgendwann davor (ich habe hier mehrere py-Dateien, welche import-Vorgänge über mehrere Verzeichnisse vornehmen) eben "from Numeric import *" gerufen.
Ich habe Numeric installiert und dort in der numeric.py kommt es in Zeile 20 glaube ich zum "import multiarray" und das spuckt die Fehlermeldung aus (siehe oben). An den Numericdateien habe ich nichts verändert.

Ich benötige - um auf den anderen Teil Deiner Antwort einzugehen - folgende Arraymethoden /-befehle

put
take
where
zeros
ones
shape

Grüße
Python rockt.
BlackJack

Also hast Du ein Programm dass Du nicht selbst geschrieben hast, was `Numeric` importiert. Damit kannst Du `numarray` und `numpy` ja schon einmal vergessen wenn Du das Programm nicht selber anpassen willst.

Wenn ``import Numeric`` nicht funktioniert, dann ist `Numeric` höchstwahrscheinlich nicht richtig installiert. `Numeric.multiarray` ist eine C-Erweiterung. Gibt's denn eine `multiarray.pyd` im Numeric-Verzeichnis?
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

Ja, ich habe ein Programm, welches inhaltlich neu angepasst werden muss (Thema: hydrologische Berechnungen). Eigentlich wurde mir gesagt, dass man gerne sehen würde, dass alle Numeric-Sachen auf numpy umgestellt werden, da Numeric ja am auslaufen ist, nicht wahr?

Die von Dir erwähnte multiarray.pyd liegt im Numericverzeichnis, der Fehler taucht trotzdem auf. Kann man die multiarray.pyd denn irgendwie in ein Visual Studio C++ Projekt importieren? Dort will ich nämlich eine EXe-Datei erstellen, welche später dioe Pythondateien rufen soll. Funktionieren die Pythonbefehle nun nicht, weil vielleicht der EXe etwas fehlt?

Grüße
Python rockt.
BlackJack

Wenn Du am ganz normalen Python-Prompt dieses Modul nicht importieren kannst, dann stimmt etwas mit der '*.pyd'-Datei nicht. Installiere doch einfach nochmal neu.

Ich würde auf jeden Fall erst einmal das Programm mit `Numeric` zum laufen bringen. Nur dann hast Du Vergleichsmöglichkeiten und kannst beim anpassen an `numpy` prüfen ob sich die alte Version gleich verhält.
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

Ich habe Python 2.4 und dafür nun schon einige Male Numeric neuinstalliert, weil ich mir ähnliches auch schon dachte. Es funktioniert danach aber auch nicht. Vom prompt kann ich doch sowieso keine pyd-Datei importieren, oder?

Code: Alles auswählen

from Numeric import multiarray
funktioniert auf jeden Fall nicht. So lange ich diesen Punkt nicht aufgelöst habe, lasse ich auch die Finger erstmal von Umstellung auf numpy, macht ja keinen Sinn.

Mein Verdacht geht in eine andere Richtung: Irgendwer sagte doch, dass multiarray was mit C zu tun hat. Meine EXE kommt aus C++ und stellt in der 4er-Version eine Art Debugmodus für das Programm dar, in der 5er Version so zusagen die Releaseversion.
So. Bei der 5er Version stolpert die EXE, wenn sie die ganzen Pythondateien ruft, nicht. In der 4er Version hingegen kommt der "multiarray"-Fehler... Daher habe ich überlegt, ob man der EXE vorm Compilieren in Visual Studio vielleicht noch irgendetwas in der Art von "import multiarrays" mitgeben kann. Unterschiede zuer 5er-Version der EXE diesbezüglich kann ich leider nicht finden.

Viele Grüße
Python rockt.
BlackJack

Wie jetzt? Aus einem Deiner C++-Programme funktioniert der Aufruf aber vom Python-Prompt aus nicht!?

`*.pyd`-Dateien sind Module die in C geschrieben sind. Die lassen sich von Python aus importieren. Wären ja sonst ziemlich nutzlos. Also Dein ``import`` im letzten Beitrag muss auf jeden Fall funktionieren:

Code: Alles auswählen

In [74]: from Numeric import multiarray

In [75]: multiarray.arange(5)
Out[75]: array([0, 1, 2, 3, 4])
Wie installierst Du `Numeric` denn? Und passt die `Numeric`-Version zum Python-Interpreter? Verwenden Deine beiden C++-EXEn den selben Interpreter?
mod_che
User
Beiträge: 46
Registriert: Freitag 13. April 2007, 16:58

1) Deine Importanweisung kann ich im Pythoninterpreter ausführen.
from Numeric import multiarray
Ich habe übrigens Python 2.4 und Numeric auch für Python 2.4 - hab ich nachgesehen.

2) Es wird mir bei der einen EXE Datei eben gemeldet:

Code: Alles auswählen

Import can't find module, or can't find name in module.
No module named multiarray
 line 20 in ? in file F:\......\gw.py
 line 91 in ? in file ....\Python24\lib\site-packages\Numeric\Numeric.py
3) Numeric ist in gw.py mit

Code: Alles auswählen

from Numeric import * 
installiert[/code]
Python rockt.
BlackJack

Dann liegt das Problem bei der EXE aus 2). Benutzt die vielleicht eine andere Pythonversion aber trotzdem das Library-Verzeichnis der 2.4 weil irgendwelche Umgebungsvariablen darauf verweisen?
Antworten