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


0

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


Zu Ihrer Information, apt Programme werden nicht vom Quellcode kompiliert, es werden vorkompilierte Pakete installiert.
gronostaj

1
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

Antworten:


0

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.