python-3.x - 导入不在 python 中运行
问题描述
我正在开发一个 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
一些想法我该如何解决?
解决方案
在一个部分不相关的说明中,绝对导入绝对比相对导入更推荐。PEP8:
非常不鼓励用于包内导入的相对导入。始终对所有导入使用绝对包路径。即使现在 PEP 328 [7] 已在 Python 2.5 中完全实现,它的显式相对导入风格也被积极劝阻。绝对导入更便携,通常更具可读性。
至于模块错误本身,__init__.py
在“coordenadas”目录下添加一个文件就会变成一个模块,这正是你所需要的。
推荐阅读
- javascript - 使用 componentDidMount 调用两次渲染方法 - React native
- javascript - Javascript平台杠杆阅读器?
- javascript - 如何从下拉列表中删除先前选择的选项但在编辑模式下显示?
- c# - ASP.NET MVC LINQ GroupBy 与 SQL Server GroupBy 不同?
- java - 如何在java项目的.proto文件中导入
- java - 处理 - ArrayList.add nullpointerexception
- java - 启用“请勿打扰”时无法使用 android 的 VIBRATOR_SERVICE 振动
- office365 - Microsoft 图表:在 calendarView 中加载选定字段时,ICalUid 返回 null
- c - 我的递归 C 函数有什么问题?
- html - div的内容如何扩展?