![我可以在 ubuntu 18.04 上使用旧版本的 gcc 重新编译 python 吗?](https://linux22.com/image/1569728/%E6%88%91%E5%8F%AF%E4%BB%A5%E5%9C%A8%20ubuntu%2018.04%20%E4%B8%8A%E4%BD%BF%E7%94%A8%E6%97%A7%E7%89%88%E6%9C%AC%E7%9A%84%20gcc%20%E9%87%8D%E6%96%B0%E7%BC%96%E8%AF%91%20python%20%E5%90%97%EF%BC%9F.png)
昨天,我将我的操作系统从 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