奇怪的Python导入行为

时间:2013-10-15 18:27:13

标签: python packages python-import

我在导入子包时遇到问题。我的包结构是:

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.pyhelpers\或同一级别内没有sys.path等文件。

PPS:整个项目包已通过sys.path.insert(0, '<project_abs_path>')

添加到{{1}}

PPPS:Python 2.7.3,Ubuntu 12.04

1 个答案:

答案 0 :(得分:1)

import project.helpers

project.helpers.somefunction()