Python 模块在 运行 单独时表现良好,但在作为包装器的一部分导入时表现不佳

Python module behaves when run alone, but not when imported as part of a wrapper

我正在尝试围绕我创建的包编写一个包装器

我有以下 python 包结构:

package1
|--__init__.py (blank)
|--module1.py
|--module2.py
|--module3.py

package2
|--module4.py

package1.module1:

import module2
from module3 import *

def main():
  # Do some stuff
  module2.doSomeModule2Stuff()

if __name__ == "__main__":
  main()

package2.module4:

import package1

def main():
  package1.module1.main()

我使用 python -m pip install -e package1 在本地安装了 package1,因此我可以将其导入 package2

当我 运行 python module1.py(在 package1 目录中)时,它 运行 没问题。

当我 运行 python module4.py (在 package2 目录中)时,我得到:

Traceback (most recent call last):
File "module4.py", line 3, in <module>
  package1.module1.main()
AttributeError: module 'package1' has no attribute 'module1'

我需要在 package1 中更改什么才能以这种方式在 package2 中使用它?

编辑 1

import package1 更改为 import package1.module1 现在会导致以下错误

Traceback (most recent call last):
File "module4.py", line 1, in <module>
    import package1.module1
File "/home/ben/Documents/package1/package1/module1.py", line 1, in <module>
    import module2
ImportError: No module named 'module2'

导入包不会自动导入其所有子模块,因此 import package1 不一定足以访问 package1.module1。尝试:

import package1.module1

您还可以这样做:

from package1 import module1

def main():
    module1.main()

from package1.module1 import main

def my_main():  # names of mains must be different
    main()