python - 模块存在,pyCharm 建议我的名称,但导入失败
问题描述
我是 python 新手,我在模块/包和导入方面遇到了一些问题。我在 pyCharm 中有一个 python 项目,这是我的项目结构:
project
|
|------ model (package)
|
|---- __init__.py
|---- impianto.py
|---- componente.py
|---- sorgente.py
|------- app.py
每个模块都定义了一个同名的类,因此 impianto.py 定义了一个名为 Impianto 的类,componente.py 定义了一个名为 Componente 的类等等。在 app.py 中,我导入了 Impianto 类。这就是我所做的:
from model.impianto import Impianto
在 impianto.py 我像这样导入 Componente:
from model.componente import Componente
在 componente.py 我像这样导入 Sorgente:
from model.sorgente import Sorgente
请注意,Sorgente 扩展了 Componente,pyCharm 向我建议了导入名称,但是当我运行 app.py 时,它给了我这个错误
File "/home/gjcode/PycharmProjects/es3_2016/app.py", line 2, in
<module>
from model.impianto import Impianto
File "/home/gjcode/PycharmProjects/es3_2016/model/impianto.py", line 1, in <module>
from model.componente import Componente
File "/home/gjcode/PycharmProjects/es3_2016/model/componente.py", line 1, in <module>
from model.sorgente import Sorgente
File "/home/gjcode/PycharmProjects/es3_2016/model/sorgente.py", line 1, in <module>
from model.componente import Componente
ImportError: cannot import name 'Componente'
解决方案
您有循环依赖导入。你尝试执行
from model.componente import Componente
在两个文件中,insorgente.py
和 inimpianto.py
尝试从中删除sogrente.py
from model.componente import Componente
推荐阅读
- ios - 多个应用程序用户访问 CloudKit 中的私有数据库
- unity3d - 使用 ScreenCapture.CaptureScreenshotAsTexture() 后如何显示纹理;
- javascript - 在段落之后插入元素(不仅仅是节点)
- javascript - 如何从 UWP WebView 中提取 httponly cookie?
- python-3.x - 为什么 tkinter 方面在 Windows 7 中不起作用?
- java - 从字符串慢慢将文本打印到 JLabel?
- tcl - 为什么 tcl 认为空字符串是双精度的?
- python-3.x - 如何在 QGridLayout 中为隐藏的 QtWaitingSpinner 保留空间?
- python - python tkinter 字体大小跨平台
- json - 在 ReactJS 中调用本地 json 文件并解析数据