我在导入子包时遇到问题。我的包结构是:
project/
__init__.py
defaults.py
helpers/
__init__.py
misc.py
我需要在整个项目中使用defaults.py
的数据,包括helpers\misc.py
,而在defaults.py
我需要使用helpers\misc.py
中的一些函数。为了解决循环引用,我试图引用项目根目录中的所有内容,即在defaults.py
内部
import project
project.helpers.somefunction()
然而,这不起作用。当我直接导入函数时,它确实有效,如下所示:
from project.helpers import somefunction
somefunction()
但后来我有一个循环引用问题。 我在项目子包里到处都有同样的问题,但在其他地方我可以直接导入子包并解决问题。
那么,如果我从子包导入它,为什么它可以工作,但是当我从root包开始引用相同的子包时却没有呢?
PS:helpers.py
与helpers\
或同一级别内没有sys.path
等文件。
PPS:整个项目包已通过sys.path.insert(0, '<project_abs_path>')
PPPS:Python 2.7.3,Ubuntu 12.04
答案 0 :(得分:1)
import project.helpers
project.helpers.somefunction()