首页 > 解决方案 > ValueError:尝试在非包 [gem5] 中进行相对导入

问题描述

我在 configs/common 中使用配置 Simulation.py。我得到错误

ValueError:尝试在非包中进行相对导入

完整的错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "build/X86/python/m5/main.py", line 438, in main
    exec(filecode, scope)
  File "configs/common/Simulation.py", line 49, in <module>
    from . import CpuConfig
ValueError: Attempted relative import in non-package

模拟.py:

from __future__ import print_function
from __future__ import absolute_import

import sys
from os import getcwd
from os.path import join as joinpath

from . import CpuConfig
from . import BPConfig
from . import MemConfig

import m5
from m5.defines import buildEnv
from m5.objects import *
from m5.util import *

addToPath('../common')

我尝试从相对导入路径更改为绝对导入路径,但仍然出现错误。这家伙有一个类似的错误:https ://www.mail-archive.com/gem5-users@gem5.org/msg16430.html但它没有为我解决。

OS: Ubuntu 18.04.2 LTS
git SHA: d00aa3658498968f7dc2b586347771734af0d24a

标签: pythongem5

解决方案


Eleanor 的评论之后,似乎他们试图configs/common/Simulation.py直接使用 gem5.opt 执行,这是不受支持的。

一般来说,下面的 Python 脚本configs/common并不意味着直接执行,而只是将其他脚本排除在外。

我知道的最重要的树内脚本是:

  • configs/example/fs.py: 主跨拱全系统脚本
  • configs/example/se.py:主跨拱系统调用仿真脚本
  • configs/example/arm/fs_bigLITTLE.py: ARM bigLITTLE 系统
  • configs/example/arm/starter_fs.py:ARM最小系统
  • gem5/configs/learning_gem5/: Jason 学习 Gem5 教程的教程脚本

因此,您会看到其中configs/example/包含大多数有趣的内容。您只需要了解脚本必须包含哪些内容才能“可运行”,最重要的组件基本上是调用:

Simulation.run

这实际上开始了模拟。

我所知道的唯一可观的文件是:

  1. http://gem5.org/这是一个半凌乱的维基,所以碰碰运气

  2. Jason 的http://learning.gem5.org/展示了如何设置一些基本的 Python 配置,非常有价值

  3. https://github.com/cirosantilli/linux-kernel-module-cheat其中包含一些可以正常工作并且可以作为起始参考的设置


推荐阅读