Gestern habe ich mein Betriebssystem von ubuntu 16.04 auf 18.04 aktualisiert.
Seitdem funktioniert eines meiner Python-Module (auf Python 2.7) nicht mehr. Beim Versuch, es zu importieren, wurde ein Fehler ausgegeben.
Dieses Modul verwendet Fortran-Code mit f2py, also versuchte ich es mit update-alternatives
um wieder auf gcc-5 und gfotran-5 zu wechseln, bevor Sie es erneut erstellen.
Bis zu einem gewissen Grad hat dies die Situation verbessert, da Python nun den Import des Moduls akzeptiert. Es funktioniert jedoch immer noch nicht, wenn ich versuche, es zu verwenden, und es werden Fehler ausgegeben, die mit:
capi_return is NULL
Call-back "some_routine" failed.
Ermutigt durch diesen scheinbaren Fortschritt möchte ich sehen, ob der verbleibende Fehler auf einen Konflikt zwischen den zum Erstellen des Moduls verwendeten Compilerversionen und dem Python selbst zurückzuführen ist. Tatsächlich wurde Python mit gcc 7.3 kompiliert.
Ist es möglich, Python 2.7 mit gcc-5 neu zu kompilieren?
Was ich probiert habe: Nach dem Wechsel zu älteren Compilerversionen bin ich in den Konsolenmodus gegangen und habe Folgendes getan:
sudo apt-get install --reinstall python
Python sagt aber immer noch, dass es mit gcc 7.3 kompiliert wurde.
Könnte sich zwischen den beiden Betriebssystemversionen, die das Modul beschädigt haben, etwas anderes geändert haben?
Ich möchte betonen, dass ich das Modul nicht selbst geschrieben habe und dass es vor dem Betriebssystem-Upgrade gut funktioniert hat.
Vielen Dank im Voraus für Ihre Vorschläge :)
quelle
apt
Programme werden nicht vom Quellcode kompiliert, es werden vorkompilierte Pakete installiert.Antworten:
Dies liegt daran, dass Ubuntu 18.04 nicht mit Python2 geliefert wird. Es wird standardmäßig mit Python3 geliefert. Sie können python2 jedoch problemlos neben python3 installieren. Dann funktionieren Ihre Module wieder.
Sie sollten nichts kompilieren müssen. Installieren Sie einfach Python 2:
Sie können anhand des Versionsarguments prüfen, welche Version welche ist.
quelle