我有一个python包,它被截短如下:

<main package>
   |-> __init__.py
   <sub package1>
      |-> __init__.py
      |-> admin.py
      |-> <other python files>
   <sub package 2>
      |-> __init__.py
      |-> <other python files>

在主包init.py中,我执行了以下操作:
import subpackage1
import subpackage2
__version__ = "1.2.1a"

当我使用这个包时,我遇到了导入问题
from mainpackage import subpackage1 # works
admin = subpackage1.admin  #fails
from mainpackage.subpackage1 import admin # works

我是否可以直接从子包1调用管理模块?我有什么遗漏吗?
谢谢

最佳答案

尝试在import admin__init__.py中添加subpackage1
之后,以下代码应该可以工作:

/main/subpackage1/__init__.py

import admin

/main/subpackage1/admin.py

def PrintAdmin():
    print 'Admin'

/some_other_module.py:

from main import subpackage1
admin = subpackage1.admin
#Invoke some function from admin.py
admin.PrintAdmin() #RESULT: Admin

09-10 03:34
查看更多