gpt4 book ai didi

python - 奇怪的 python3 导入问题,没有名为 的模块

转载 作者:行者123 更新时间:2023-12-01 04:57:43 24 4
gpt4 key购买 nike

我写了一些像这样的Python文件:

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

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

<main.py>
from view.MainWindow import MainWindow
...

-

<MainWindow.py>
from view.ListEditor import ListEditor

和ListEditor.py不导入任何文件。每个MainWindow.py或ListEditor.py定义一个与文件名相同的类。

当我从 main.py 运行该程序时,它可以工作。但是当我从 MainWindow.py 运行时,我得到了 ImportError: No module named 'view'

如果我写

from ListEditor import ListEditor

在MainWindow.py中,python MainWindow.py就可以了。但是 python main.py 会出现错误:导入错误:没有名为“ListEditor”的模块

那么,有没有办法让 python main.pypython MainWindow.py 同时正确运行?

我使用的是python3.4

<小时/>

附注

我想我已经解决了这里的问题。 import 命令在 sys.path 中搜索模块。 sys.path 是一组预定义路径加上运行脚本路径。当我从 MainWindow.py 运行代码时,代码 import ListEditor 正常工作,但是当我从 main.py 运行时,当前路径设置为父路径。所以我需要导入view.ListEditor。嗯,有几种方法可以处理它。 @Vincent Beltman 的答案就是其中之一。或者只是将这些代码放入 __init__.py 文件中:

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

最后,我是Python新手。而且我认为导入命令很奇怪。我认为它应该相对于包含命令的源文件的路径搜索文件,而不仅仅是相对于起始文件。启动文件可能会有所不同并导致像这样的问题。

最佳答案

试试这个:

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

关于python - 奇怪的 python3 导入问题,没有名为 <module> 的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26989865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com