sys.path manipulieren in Abqus, scipy, numpy

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Jeremy
User
Beiträge: 48
Registriert: Samstag 29. November 2008, 19:05

Hallo Forum,

ich arbeite mit Abaqus (FEM-Software) und möchte dort mit scipy (Version 0.12.0) arbeiten. Dazu brauche ich allerdings mindestens numpy-1.5.0, Abaqus stellt aber nur numpy-1.4.0 bereit.
Jetzt war meinen Idee: ich füge wie in der Python-Shell über

Code: Alles auswählen

from sys import path
ein neues Verzeichnis hinzu, in welchem zusätzlich nach den beiden Bibliotheken numpy und scipy gesucht wird und zwar so , dass numpy-1.5.0 zuerst gefunden wird. Denn ich möchte nur in diesem Script mit numpy-1.5.0 arbeiten.
In der Python Shell außerhalb Abaqus funktioniert das auch einwandfrei, nur wenn ich in Abaqus nach dem gleichen Schema vorgehe, kann ich die Variable path zwar manipulieren, aber es wirkt sich nicht auf die import-Anweisung aus, d.h. mit

Code: Alles auswählen

import numpy 
wird stets die Version 1.4.0 geladen.
Hat jemand eine Idee warum das so ist?

Gruß
Jeremy

Betriebssystem: Win 7 64bit
BlackJack

@Jeremy: Vielleicht liegt das falsche `numpy` vor dem richtigen in der Liste oder vielleicht wurde das schon importiert bevor Dein Skript überhaupt läuft. Letzteres könnte man Beispielsweise so feststellen:

Code: Alles auswählen

import sys
print 'numpy' in sys.modules
Jeremy
User
Beiträge: 48
Registriert: Samstag 29. November 2008, 19:05

Hallo BlackJack,

als Antowrt bekomme ich "TRUE", was wohl bedeutet, das numpy bereits importiert ist. Allerdings kann ich keine Funktionen von numpy nutzen, solange ich nicht mit

Code: Alles auswählen

import numpy
importiert habe.
Kann ich irgendie ermitteln ob numpy unter einer anderen Benennung importiert wurde?
Mit sys.modules bekomme ich alle geladenen Modules angezeigt?

Gruß
Jeremy
BlackJack

@Jeremy: Wenn man etwas importiert dann ist das ja nicht automatisch in jedem Modul verfügbar. Das wäre auch ziemlich ungünstig.

Das bedeutet für Dich jetzt, das Abqus dieses Modul importiert bevor Dein Skript gestartet wird. Da wirst Du also mit der mitgelieferten Version zurecht kommen müssen.
Jeremy
User
Beiträge: 48
Registriert: Samstag 29. November 2008, 19:05

@BlackJack: Für Abaqus gibt es folglich irgendwo eine Datei die regelt, welche Module schon beim Start importiert werden. Mit relaod(numpy) und vorherigem Ändern der Variablen sys.path hat es auch nicht funktionert. Es bleibt immer bei der Verion numpy-1.4.0.
Dann werde ich meine Berechnungen wohl außerhalb abaqus machen müssen und deren Endergebnis mit Hilfe von txt-Dateien speichern und dann in Abaqus wieder einlesen.
Dank für die Hinweise.
Antworten