我可以在 ubuntu 18.04 上使用旧版本的 gcc 重新编译 python 吗?

我可以在 ubuntu 18.04 上使用旧版本的 gcc 重新编译 python 吗?

昨天,我将我的操作系统从 ubuntu 16.04 升级到了 18.04。

从那时起,我的一个 Python 模块(在 Python 2.7 上)就不再工作了。尝试导入它时出现错误。

该模块使用带有 f2py 的 fortran 代码,因此我尝试update-alternatives在再次制作之前切换回 gcc-5 和 gfotran-5。

在某种程度上,这让情况有所改善,因为 python 现在可以接受导入模块了。但是,当我尝试使用它时,它仍然不起作用,抛出以下错误:

 capi_return is NULL
 Call-back "some_routine" failed.

看到这一明显的进步,我深受鼓舞,想看看剩下的错误是否是由于制作模块所用的编译器版本与 Python 本身不匹配造成的。事实上,Python 是用 gcc 7.3 编译的。

是否可以用 gcc-5 重新编译 python 2.7?

我尝试过的:切换到旧版本的编译器后,我进入控制台模式并执行了以下操作:

 sudo apt-get install --reinstall python

但是python仍然说它是用gcc 7.3编译的。

两个操作系统版本之间是否存在其他变化,导致模块损坏?

我想强调的是,我不是自己编写该模块的,并且它在操作系统升级之前运行良好。

提前感谢您的建议:)

答案1

这是因为 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

相关内容