Python模块在单独运行时起作用,但在作为wrapp的一部分导入时不起作用

2024-04-19 17:42:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在我创建的包周围写一个包装器

我有以下python包结构:

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

package2
|--module4.py

包装1.模块1:

import module2
from module3 import *

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

if __name__ == "__main__":
  main()

包装2.模块4:

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'

Tags: 模块inpyimportmaindeflinefile
1条回答
网友
1楼 · 发布于 2024-04-19 17:42:38

导入包不会自动导入其所有子模块,因此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()

相关问题 更多 >