Могу ли я перекомпилировать python с более старой версией gcc в ubuntu 18.04?

251
Antoine

Вчера я обновил свою ОС с Ubuntu 16.04 до 18.04.

С тех пор один из моих модулей Python (на Python 2.7) больше не работает. Попытка импортировать его привела к ошибке.

Этот модуль использует код fortran с f2py, поэтому я попытался update-alternativesпереключиться обратно на gcc-5 и gfotran-5, прежде чем делать это снова.

В некоторой степени это улучшило ситуацию, так как теперь Python разрешает импортировать модуль. Тем не менее, он все еще не работает, когда я пытаюсь использовать его, выбрасывая ошибки, которые начинаются с:

 capi_return is NULL Call-back "some_routine" failed. 

Воодушевленный этим очевидным прогрессом, я хочу посмотреть, связана ли оставшаяся ошибка с несоответствием между версиями компилятора, использованными для создания модуля, и самого python. Действительно, python был скомпилирован с gcc 7.3.

Можно ли пересобрать python 2.7 с помощью gcc-5?

Что я пробовал: после перехода на более старые версии компилятора я перешел в режим консоли и сделал:

 sudo apt-get install --reinstall python 

Но python по-прежнему говорит, что он был скомпилирован с gcc 7.3.

Может ли что-то еще измениться между двумя версиями ОС, которые сломали модуль?

Хочу подчеркнуть, что я сам не писал модуль, и до обновления ОС он работал нормально.

Заранее спасибо за ваши предложения :)

0
К вашему сведению, `apt` не компилирует программы из исходного кода, он устанавливает предварительно скомпилированные пакеты. gronostaj 5 лет назад 0
Вы должны найти исходный код Python и перекомпилировать «вручную». Но проблема, скорее, проблема версии Python или некоторой библиотеки времени выполнения. Почему бы вам не обновить модуль вместо? xenoid 5 лет назад 1

1 ответ на вопрос

0
kittyboo

Это потому что Ubuntu 18.04 не поставляется с Python2. Он поставляется с Python3 по умолчанию. Вы можете легко установить python2 вдоль стороны python3. Тогда ваши модули будут работать снова.

Вам не нужно ничего компилировать. Просто установите Python 2:

sudo apt-get install python2.7 

Вы можете проверить, какая версия какой, используя аргумент версии:

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

Похожие вопросы