如何在gem5中同时使用python 2.7和3?

问题描述

我有一台具有两个gem5存储库实例的机器:一个我保持最新状态,而另一个使用的是我无法更新的旧版本。

我正在使用Ubuntu 16.04,当前的gem5版本已弃用python 2.7。我正在推迟升级操作系统,并使用一些解决方法(还原提交scons: Set the minimum scons version to 3.0,并手动将EM_RISCV添加src/base/loader/elf_object.cc);但是,最近情况变得凌乱,因此为了使用SCons 3和python3,我不得不这样做。

在尝试了Ubuntu 18.04和20.04之后,由于在某些python类中使用了元类,我仍然无法编译。

但是,真正的问题很明显;即使我安装了python3(在/usr/bin/中),也找不到python3-config

Info: Using Python config: python2.7-config

如何在同一台计算机上同时使用python 2.7和python 3来编译不同版本的gem5?

解决方法

如果SCons找不到python3-config,请手动覆盖PYTHON_CONFIG及其位置,并设置适当的环境。

alias scons2="/usr/bin/env python2.7 $(which scons) PYTHON_CONFIG=$(which python2.7-config)"
alias scons3="/usr/bin/env python3 $(which scons) PYTHON_CONFIG=$(which python3-config)"

然后,编译更新的存储库:

scons3 -j5 ./build/ARM/gem5.opt

要编译需要python 2.7的版本:

scons2 -j5 ./build/ARM/gem5.opt