2016-03-22 7 views
1

Ich hatte gedacht, ich benutze die neueste Version von numpy (1.10) Zumindest, wenn ich pip list laufen sehe ich numpy (1.10.4). Allerdings, wenn ich in den Python-Interpreter und gebenWie kann ich numpy_1.8 durch das Maskieren von numpy_1.10 stoppen?

import numpy 
numpy.__version__ 

Ich sehe

'1.8.2' 

Ich gehe davon aus, dass die 1.8.2 wurde irgendwann nach der 1.10-Version installiert, weil ich vor kurzem einige neue installiert haben Pakete und ich jetzt, wenn ich einige Code ausführen, der die Arbeit verwendet wird, bekomme ich diesen Fehler:

RuntimeError: module compiled against API version a but this version of numpy is 9 

In OpenCV 2.4.8: module compiled against API version 9 die akzeptierte Antwort erwähnt, dass die numpy Team auf Version 1 bezieht. 8 als numpy Version 9. Also, ich denke, dass ich ursprünglich numpy_1.10 verwendet habe und irgendwie numpy_1.8 installiert habe.

Meine erste Frage ist: Wie ist das passiert und wie kann ich dagegen wehren?

Ich möchte auch wissen, wie ich numpy_1.8 vom Blockieren 1.10 stoppen kann. Mein erster Gedanke war, numpy_1.8 mit apt-get zu entfernen, aber das hätte viele andere Pakete entfernt, die von 1.8 abhängig sind.

Ich wäre versucht, nur RM zu verwenden, um die Version 1.8 loszuwerden, aber bin besorgt, dass diese anderen Pakete betroffen wären.

Mein zweiter Gedanke ist, sys.path zu ändern, um sicherzustellen, dass die Version 1.10 vor der Version 1.8 gesehen wird. Bis jetzt benutze ich PYTHONPATH nicht. Gibt es eine Möglichkeit, sys.path ohne PYTHONPATH zu ändern? Ist das ein vernünftiger Ansatz?

+0

OK - ich nehme an, mit virtualenv oder Docker würde mir helfen, aber ich muss noch herausfinden, was jetzt zu tun ist. – user1245262

Antwort

0

Am einfachsten ist es, Ihre NumPy 1.8-Installation zu entfernen. Sehen Sie sich numpy.__file__ an, um herauszufinden, wo sich Ihre 1.8-Installation befindet, und löschen Sie dann das Verzeichnis.

Alternativ, wie Sie bereits erwähnt haben und wenn Sie 1.8 nicht löschen möchten, können Sie auch Ihren Pfad ändern. So etwas wie dies sollte es tun:

import sys 
sys.path.insert(3, '<path_to_your_NumPy_1.10_install>') 

I an Position eingefügt haben 3, so dass Sie Dinge wie '' an der Spitze halten, aber man konnte diese nach Bedarf ändern.

+0

Danke, aber von dem, was ich sagen kann, funktioniert das nur für einen einzigen Aufruf des Python-Interpreters. Ich möchte das nicht jedes Mal merken müssen, wenn ich ein Modul lade, das numpy_1.10 benötigt – user1245262

+0

@ user1245262; Was ist dein Einwand gegen die erste Hälfte dieser Lösung? – farenorth

+0

Als ich versuchte, numpy_1.8 mithilfe von synaptic zu entfernen, wurden mehrere andere Pakete aufgelistet, die auf numpy_1.8 basierten, die gelöscht wurden. Wenn ich nur rm -rf verwende, um das Verzeichnis zu entfernen, in dem numpy_1.8 lebt, was passiert dann mit den Paketen, die davon abhängen? Wird der Fund numpy_1.10 alleine finden oder werde ich eine Kaskade von Paketen erstellen, die entfernt und neu installiert werden müssen? – user1245262