Kann ich Python mit einer älteren Version von gcc auf Ubuntu 18.04 erneut kompilieren?

317
Antoine

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. Daher habe ich versucht update-alternatives, wieder auf gcc-5 und gfotran-5 umzuschalten, bevor es erneut erstellt wurde.

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 ausprobiert 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 :)

0
Zu Ihrer Information, `apt` kompiliert keine Programme aus dem Quellcode, sondern installiert vorkompilierte Pakete. gronostaj vor 5 Jahren 0
Sie müssten den Python-Quellcode finden und "manuell" neu kompilieren. Das Problem ist jedoch eher ein Problem der Python-Version oder einer Laufzeitbibliothek. Warum aktualisieren Sie nicht stattdessen das Modul? xenoid vor 5 Jahren 1

1 Antwort auf die Frage

0
kittyboo

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:

sudo apt-get install python2.7 

Sie können anhand des Versionsarguments prüfen, welche Version welche ist.

root@server:~/PycharmProjects$ python2 --version Python 2.7.12 root@server:~/PycharmProjects$ python3 --version Python 3.5.2