奇怪的python3导入问题,没有名为<module>

2024-04-24 16:26:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了一些python文件如下:

main.py
view/   __init__.py #empity file
        MainWindow.py
        ListEditor.py

在每个文件中我都写下了这些导入:

^{pr2}$

-

<MainWindow.py>
from view.ListEditor import ListEditor

以及列表编辑器.py不要导入任何文件。 每个主窗口.py或者列表编辑器.py定义一个与文件名同名的类。在

当我从运行程序时主.py,它起作用了。但当我从主窗口.py我得到了重要提示:没有名为“视图”的模块

如果我写信

from ListEditor import ListEditor

在主窗口.py,python MainWindow.py就可以了。但是python main.py将得到错误: ImportError:没有名为“ListEditor”的模块

那么,有没有办法让python main.py和{}同时得到正确的结果?在

我用的是Python3.4


p.S.

我想我已经解决了这个问题。import命令在中搜索模块搜索路径. 这个系统路径是一组预定义的路径加上正在运行的脚本路径。当我从主窗口.py,代码import ListEditor可以工作,但是当我从主.py,则当前路径设置为父路径。所以我需要import view.ListEditor。 好吧,有几种方法可以解决这个问题。@文森特·贝尔特曼的回答就是其中之一。或者将这些代码放入__init__.py文件中:

import os, sys
path = os.path.dirname(os.path.abspath(__file__))
sys.path.append(path)

最后,我是python的新手。我觉得import命令很奇怪。我认为它应该搜索相对于包含命令的源文件路径的文件,而不仅仅是相对于starter文件。启动文件可能会发生变化,并引发类似这样的问题。在


Tags: 模块文件pathfrompyimport命令路径
1条回答
网友
1楼 · 发布于 2024-04-24 16:26:49

试试这个:

try:
    from view.ListEditor import ListEditor # If this one fails
except:
    try:
        from ListEditor import ListEditor # It will try this one

相关问题 更多 >