正确解决目录导入错误

2024-07-04 05:01:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这里的问题更多的是关于以一种被认为是“Pythonically correct”的方式解决导入错误的适当方法,如果有这样一个术语的话。我以为我有办法解决我的问题(贴在下面并更新),但即使这样也不管用

上下文

我已经查看了对此的各种响应(比如How to resolve import errors in python?),我认为我已经做了这些事情,但是我仍然有一个问题,我在这里发布

示例

我有以下结构:

pacumen
  rules
    __init__.py
    pacman_rules.py
  pacman.py
  game.py

pacman_rules.py我有一个类:

class PacmanRules:
    ....

在我的pacman.py文件中,我有以下import语句:

from rules.pacman_rules import PacmanRules

请注意,这是PyCharm自动生成的。所以PyCharm告诉我它很好解决

但是,当我从命令行运行pacman.py时,会出现以下错误:

ImportError: cannot import name PacmanRules

考虑到代码行,我不知道为什么会发生这种情况

pacman.py中,我也有这样一句话:

from game import GameStateData

那一个很好用。注意,类GameStateData来自我的game.py文件。所以我猜我的问题是,我试图从不同目录中的文件导入,而不是从同一目录中的文件导入

可能的解决方案(更新:不起作用)

所以我尝试了这个导入:

from rules import pacman_rules

这似乎管用,但需要我像这样改变台词:

PacmanRules.getLegalActions(self)

对于这样的线条:

pacman_rules.PacmanRules.getLegalActions(self)

这让我觉得很混乱,而且似乎违背了导入类名的目的,这样我就可以使用它,而不必在它前面加序

但是,事实证明,这也行不通。这只是得到一个不同的错误:

ImportError: cannot import name pacman_rules

这就是我的问题。大多数问题似乎都围绕着如何解决这个问题;事实证明,我甚至没有一个“补丁”

我很好奇的是,为什么最初的方法不起作用(特别是因为PyCharm生成了它),以及我提出的解决方案是否适合处理这个问题


Tags: 文件方法namefrompyimportgame错误

热门问题