【问题标题】:Import don't run in python导入不在 python 中运行
【发布时间】:2020-12-20 19:35:54
【问题描述】:

我正在开发一个 Django 项目,我正在尝试运行一个测试文件,但导入时出现错误。 我的文件夹层次结构就像图像:

查看 core.py 中函数 process_data 的图像

我在测试目录中试图运行我的测试文件。

我的导入就像代码一样:

from coordenadas.core import process_data

但是,当我运行我的代码时,会显示错误:

Traceback (most recent call last):
  File "tests_class_moviment.py", line 1, in <module>
    from coordenadas.core import process_data
ModuleNotFoundError: No module named 'coordenadas'

我尝试使用相对导入

from .coordenadas.core import process_data
from .core import process_data
from ..coordenadas.core import process_data
from ..core import process_data

但在 pycharm 中不显示错误的唯一方法是

from coordenadas.core import process_data

知道我该如何解决它?

【问题讨论】:

    标签: python-3.x import


    【解决方案1】:

    在部分不相关的注释中,绝对导入绝对比相对导入更推荐。 PEP8:

    强烈建议不要使用包内导入的相对导入。始终对所有导入使用绝对包路径。即使现在 PEP 328 [7] 已在 Python 2.5 中完全实现,它的显式相对导入风格也被积极劝阻。绝对导入更便携,通常更易读。

    至于模块错误本身,在“coordenadas”目录下添加__init__.py文件会变成一个模块,这正是你所需要的。

    【讨论】:

    • 感谢您的回答。在我的文件夹 coordenadas 中存在文件 init.py.
    • @EricGomes 我明白了。请包括整个文件夹结构,以便我可以更好地帮助您。我也没有看到您在原始问题中指定的 core 文件。
    • 对不起@Dolev P,我用新图片更新了我的帖子。
    • 我仍然看不到core 目录。如果可以的话,请将您的文件夹结构发布为文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-18
    • 2020-12-21
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多