Вчера я обновил свою ОС с 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.

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

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

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

1 ответ1

0

Это потому что 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .