AttributeError: module 'MyModule' has no attribute 'Module1'

AttributeError: module 'MyModule' has no attribute 'Module1'

我正在尝试将我的一个项目变成一个包,这样我就可以将它部署为一个轮子。 我有一个这样的项目目录设置:

ProjectDir
├── setup.py
├── MyModule
│   ├── __init__.py
│   ├── Module1
│   │   ├── __init__.py
│   │   ├── main.py
│   ├── Module2
│   │   ├── file1.py
│   │   ├── __init__.py
│   │   ├── file2.py
│   │   ├── file3.py
│   └── Module3
│       ├── __init__.py
│       ├── Sub1
│       │   ├── file1.py
│       │   ├── file2.py
│       │   ├── main.py
│       └── Sub2
│           ├── file1.py
│           ├── main.py
└── test
    ├── test_Module_1
    │   ├── __init__.py
    │   └── test_main.py
    ├── test_Module_2
    ...

顶级 __init__.py 为空
模块 1 __init__.py 文件

from main import Function1

与其他模块 __init__.py 文件类似

setup.py

from setuptools import setup, find_packages
import os
import pip

setup(name='MyModule',
    description='Tool suite to run MyModule',
    packages=['MyModule'])

我可以导入 MyModule,但是当我尝试访问任何子模块时,我得到以下信息

AttributeError: module 'MyModule' has no attribute 'Module1' Or if I check attributes of my module, none are found.

import MyModule
dir(MyModule)

['builtins', 'cached', 'doc', 'file', 'loader', 'name', 'package', 'path', 'spec', 'os']

这是预料之中的,因为默认情况下不导入子模块。 您应该像这样导入它们才能使用它们:

import MyModule.Module1

要更改此设置,您必须通过添加以下内容来调整 MyModule/__init__.py 文件:

import MyModule.Module1

这样,在执行 __init__.py 文件时,当您导入 MyModule 时,MyModule.Module1 将可用。