关于python 3: 在同一目录中导入.py文件 – ModuleNotFoundError:没有名为’__main __.char’的模块; ‘__main__’不是包

Python 3 - importing .py file in same directory - ModuleNotFoundError: No module named '__main__.char'; '__main__' is not a package

我在Windows10上使用的是python 3.6。我在同一目录下有2个.py文件,分别是char.pychar_user.py,如下所示:

夏普:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# char.py

import cv2

#######################################################################################################################
class Char:

    # constructor #####################################################################################################
    def __init__(self):
        self.contour = None
        self.centerOfMassX = None
        self.centerOfMassY = None
    # end def

# end class

CARUSU.P.PY:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# char_user.py

import os
import cv2

# I've tried this various ways, see more comments below
from .char import Char

#######################################################################################################################
def main():

    char = Char()

    char.centerOfMassX = 0
    char.centerOfMassY = 0

    print("finished main() without error")
# end main

#######################################################################################################################
if __name__ =="__main__":
    main()

无论我如何尝试,在我试图导入文件char.py、类char的char_user.py行中,我都会得到错误:

1
ModuleNotFoundError: No module named '__main__.char'; '__main__' is not a package

以下是我在char_user.py中尝试进口声明的一些方法:

1
2
3
4
from .char import Char
from . import Char
import Char
import char

我试过在同一个目录中同时使用和不使用空的__init__.py

我查阅过这些帖子,但没有人能够提供解决方案:

如何导入同一目录或子目录中的类?

modulenotfoundError:它是什么意思uu main_uuuu不是一个包?

moduleNotfoundError:没有名为"uu main_uuuuuuuuuxxx';""uu main_uuuuu"的模块不是包

这是python 3中我第一次尝试导入我在同一目录中编写的脚本(在python 2中多次这样做都不需要担心)。

有办法吗?我错过了什么?


我能得到这个工作,因为你是一个from char import Char,试图导入的类CharChar从脚本。

只要我知道,如果这是唯一的from .char import Char线的一部分使用的是Python模块文件(与自己的__init__.py),其中他们是需要的。这是明确的参考案例中,.char文件相同的文件夹char.py模块内,而所有从比从其他一些模块安装到的路径。


试试这个:from char import Char