【问题标题】:ImportError on PythonPython 上的 ImportError
【发布时间】:2019-04-03 02:56:22
【问题描述】:

我是 python 新手,遇到了这个我无法解决的问题。

我的文件结构是:

enter image description here

在 Criador.py 我有几个函数,例如:

def doSomething():
pass
def doSomethingElse():
pass

我试图在 Controller.py 文件中使用其中一个函数:

我做的第一件事是在 Controller.py 上:

import Controller.Criador

然后尝试将该功能用作:

Controller.Criador.doSomething()

运行Controller.py后,我得到了这个错误:

ModuleNotFoundError: No module named 'Controller.Criador'; 'Controller' is not a package

我尝试了其他一些方法,例如:

from . import Criador

from Controller.Criador import doSomething

from Controller import Criador

没有任何帮助,只是将错误更改为:

ImportError: cannot import name 'Criador'

ModuleNotFoundError: No module named 'Controller.Criador'; 'Controller' is not a package

ImportError: cannot import name 'Criador'

有人可以告诉我这个吗?我正在使用 PyCharm,当我声明导入时它不会给我任何错误,只有当我运行文件时

【问题讨论】:

  • 我认为你的控制器文件夹中需要一个 init.py
  • 根据我的研究,python 3 中不再需要 init.py。
  • 您的文件夹名和文件名相同,这会造成问题。如果您从同一目录中的模块导入 __init__.py 不是必需的,但如果您像这样导入 from Directory.Module import method 那么 Directory 必须有一个 __init__.py 才能被视为一个包。每次出现'Controller' is not a package 错误都是因为没有__init__.py
  • 我能够用 Edgar 的回答解决我的问题!不过还是谢谢你的帮助

标签: python import module package


【解决方案1】:

如果 Controller.pyCriador.py 在同一个文件夹中,您可以在 Controller.py 中执行此操作:

import Criador

Criador.doSomething()

【讨论】:

  • 当我尝试导入 Criador 时,PyCharm 在 Criador 中用红色下划线标记,说“没有名为 Criador 的模块”。但是,如果我运行程序,我不会收到任何错误... PyCharm 疯了吗?
  • 或多或少,但有一些解决方法。检查this answer
  • 对我的主文件夹做了那个(它变成了一个蓝色文件夹)并没有修复它,但之后我对项目中的所有文件夹做了这个,错误就消失了!谢谢!
  • 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-20
  • 2016-11-28
  • 2019-01-29
  • 2019-06-21
  • 2015-09-17
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多