Python 3 - 在同一目录中导入.py文件 - ModuleNotFoundError:没有名为'__main __.char'的模块; '__main__'不是包

cda*_*hms 6 python python-3.x

我在Windows 10上使用Python 3.6.我在同一目录中有2个.py文件char.py,并且char_user.py,如下所示:

char.py:

# char.py

import cv2

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

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

# end class
Run Code Online (Sandbox Code Playgroud)

char_user.py:

# 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()
Run Code Online (Sandbox Code Playgroud)

无论我尝试什么,在char_user.py我试图导入文件char.py,类Char的行,我得到错误:

ModuleNotFoundError: No module named '__main__.char'; '__main__' is not a package
Run Code Online (Sandbox Code Playgroud)

以下是我尝试使用import语句的一些方法char_user.py:

from .char import Char
from . import Char
import Char
import char
Run Code Online (Sandbox Code Playgroud)

__init__.py在同一目录中尝试过使用和不使用空.

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

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

ModuleNotFoundError:__main__不是包是什么意思?

ModuleNotFoundError:没有名为'__main __.xxxx'的模块; '__main__'不是包

这是我在Python 3中第一次尝试导入我在同一目录中编写的脚本(在Python 2中多次完成此操作而无需担心).

有没有办法做到这一点?我错过了什么?

小智 6

我能够使用它from char import Char,因为您正在尝试Char从脚本中导入类char

据我所知,from .char import Char仅当两个文件都是python模块(具有自己的__init__.py)的一部分时才使用该行,而事实并非如此。在这种情况下,请.char显式引用char.py同一模块文件夹中的文件,而不是引用从已安装到PYTHONPATH的其他模块的导入。


小智 4

尝试这个: from char import Char