Mit Atlas von scipy

13

Ich habe Ubuntu 12.04 64 Bit installiert. Ich muss mit Python und Scipy arbeiten. Ich habe sie installiert und beim Ausführen des Tests:

python -c "import scipy; scipy.test()"

Ich bekomme die Nachricht:

ImportError: libatlas.so.3gf: Shared Object-Datei kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis

Ich habe jedoch Libatlas-Bibliotheken unter dem Verzeichnis installiert /usr/lib/atlas-base. Ich weiß, dass ich die Dateien direkt darunter kopieren kann /usr/lib, aber ich frage mich, wie ich den scipy so einrichten kann, dass er die Bibliotheken von verwendet usr/lib/atlas-base.

lmsasu
quelle
Bitte nicht kreuzen.
Karlson
Ok, jetzt entfernt.
Lmsasu

Antworten:

19

Sie müssen nirgendwo etwas kopieren.

Sie sollten die Atlasbibliotheken zur Liste der zu lddurchsuchenden Standorte hinzufügen .

Im Verzeichnis /etc/ld.so.conf.dkönnen Sie die Datei hinzufügen atlas-lib.conf. Diese Datei sollte das Verzeichnis enthält libatlas.so.3gf, das ist /usr/lib/atlas-base.

Sie können dies tun, indem Sie ausführen

echo "/usr/lib/atlas-base" | sudo tee /etc/ld.so.conf.d/atlas-lib.conf

Endlich laufen

sudo ldconfig

zu aktualisieren, ldso dass es über diese neue Datei weiß.

Alternativ können Sie festlegen LD_LIBRARY_PATH, dass der Pfad zur Bibliothek bei der Ausführung eingeschlossen wird und in SciPy verfügbar sein soll.

Karlson
quelle
Ich bin nicht sicher, ob die atlas-lib.conf hilfreich war, aber die LD_LIBRARY_PATH hat es geschafft.
Lmsasu
1
@lmsasu Wenn Sie diese Datei erstellen, müssen Sie ausführen sudo ldconfig, um sie zu aktivieren
Karlson
Was ist der beste Ansatz, wenn Sie keinen Root-Zugriff haben? Wenn Sie es mit tun würden virtualenv, wie würden Sie in diesem Fall tun?
Albert
1
@Albert Using virtualenvist ein völlig eigenständiges Thema, aber ohne Root-Zugriff können Sie LD_LIBRARY_PATHin geeigneter Weise einstellen , was in der Antwort erwähnt wird.
Karlson
So etwas sollte mit Numpy / Scipy- oder Libatlas-Dev-Paketen gehandhabt werden, nicht wahr? Ich habe eine interessante Situation, in der Systemnummer 1.9.1 einwandfrei funktioniert, aber Nummer 1.9.2 in einer virtuellen Umgebung weist dieses Problem auf. Wie auch immer, Ihre Lösung hat das Problem behoben. Danke.
Drevicko
1

Für mich mit einem virtualenv, export LD_LIBRARY_PATH=/usr/lib/atlas-base/:${LD_LIBRARY_PATH}am Ende meiner .bashrcDatei behoben.

Sealander
quelle