帮助覆盖python导入

时间:2011-09-24 10:13:02

标签: python

在应用程序1中,我有一个settings.py文件和一个utils.py,其中包含以下内容:

from application_one import settings

def someFunction():
    // do some logic here based on imported settings

然后在申请号2中,我做了:

from application_one.utils import someFunction

在第2号应用程序中,我有一个本地settings.py,当我导入'someFunction()'时,我想使用本地settings.py而不是来自应用程序no.1的文件。那么如何在申请号2中覆盖导入呢?

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

def someFunction(settings=settings):
    …  # Unmodified code ('settings' refers to the local 'settings' variable)

(这允许someFunction()默认使用应用程序1设置),然后通过发送本地设置从应用程序2中调用它:

someFunction(application2_settings)  # Explicit settings sent by Application 2

此方法的一个优点是,应用程序1和2中的代码明确显示someFunction()给出了依赖于设置的结果。

答案 1 :(得分:0)

只需确保在加载要重载的功能后导入设置。

然而,似乎您最好完整地加载命名空间,因为这样可以防止发生整个问题。