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

时间:2018-02-20 21:33:23

标签: python python-3.x

我在Windows 10上使用Python 3.6。我在同一目录char.pychar_user.py中有2个.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

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()

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

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

以下是我在char_user.py中尝试导入语句的一些方法:

from .char import Char
from . import Char
import Char
import char

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

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

How to import the class within the same directory or sub directory?

ModuleNotFoundError: What does it mean __main__ is not a package?

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

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:2)

试试这个: from char import Char