python - ImportError:没有名为 ex47.game 的模块(是的,我有一个 __init__.py 文件 *并且* 我尝试了所有 PYTHONPATH 内容

标签 python import importerror

所以我正在尝试完成“艰难地学习 Python”练习 47,并且我创建了框架目录并在练习中创建了文件来进行自动化测试。然而,当我尝试运行 ex47_tests.py 时,我得到了这个小 gem :

Traceback (most recent call last):
  File "ex47_tests.py", line 2, in <module>
ImportError: No module named ex47.game

所以我回去检查我的目录,看看在“game.py”文件所在的同一目录中是否有一个 init.py 文件(它就在那里),并丢弃了可能缺少 init 文件。尝试再次运行它,但没有任何作用。然后我就上网查了一下问题(顺便说一句,那个写LPTHW书的家伙,呃,在你真正需要知道的教学细节方面,非常缺乏,他的教学真的开始脱离了第 42 章开始),我阅读了有关使用各种 PYTHONPATH 方法来获取 PYTHONPATH 来查找 ex47 文件夹中的文件的内容。我尝试输入“PYTHONPATH=.pythontests/ex47_tests.py”,但仍然收到该错误。然后我尝试放入备用“python -mtests.ex47_tests”行。仍然没有骰子。作为最后的手段,我尝试查看完成练习的人的代码,并查看书中的代码,并根据我的代码进行双重/三次检查,我没有发现任何差异。

所以我的问题是,我到底如何让Python真正摘下眼罩并看到目录“ex47”中实际上有一个名为“game.py”的文件并获取它当我运行 ex47_tests 文件时导入它?我几乎尝试了与该主题相关的所有答案,但一无所获。

这是我的目录结构,供引用:

bin docs ex47 setup.py tests

./bin:

./docs:

./ex47:
game.py  game.pyc  __init__.py  __init__.pyc

./tests:
ex47_tests.py  ex47_tests.py~  ex47_tests.pyc  __init__.py  __init__.pyc

这是调用游戏文件的代码片段:

from nose.tools import *
from ex47.game import Room

如果有人可以帮助我克服这个问题(也许可以理解为什么这个错误在看起来没有理由的情况下不断弹出),我将非常感激。

P.S:我还尝试从项目目录运行“nosetests”,有时它会起作用(但比指定的练习时间短),有时它会给出错误,指出无法导入游戏。 py 文件。但无论nosetest如何,我仍然无法获取ex47_tests.py文件来导入游戏文件。

最佳答案

根据要求,我将以答案的形式重新发布此内容。

所以我解决了我的问题。显然,使用 PYTHONPATH 让它读取目录中所有内容的方法是位于所有文件所在的上面目录(在本例中为项目目录),然后输入“export PYTHONPATH=”。基本上,将 PYTHONPATH 设置为“.”

关于python - ImportError:没有名为 ex47.game 的模块(是的,我有一个 __init__.py 文件 *并且* 我尝试了所有 PYTHONPATH 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23188817/

相关文章:

python - 如何检查 SqlAlchemy 中的查询是否返回空结果?

python - 使用 Flask-SQLAlchemy 在多个不同的数据库中运行 SQL

Python:导入模块麻烦,取决于运行模式

python - pytest 'No module named ...' 用于在测试模块中导入

python - 安装 PyICU 后 Python 出现段错误

python - Seaborn 无法识别列名称

python - 将带有空格的字符串加载为 numpy 数组

Python 模块导入行为

python - 从隐藏目录(包)导入模块