我在Windows 10上使用Python 3.6。我在同一目录char.py
和char_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中多次完成此操作而无需担心)。
有办法做到这一点吗?我错过了什么?
答案 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