写python包在django里面和外面运行

时间:2014-10-22 14:38:45

标签: python django

我正在编写python helper包以在我的django项目中运行,但我想在其他常规python代码中使用它(例如在django之外)。

问题是我想从django conf.settings或其他模块中获取设置,如果它在django之外。例如。类似的东西:

try:
     from django.conf import settings
except ImportError:
     import my_settings as settings

value = settings.SOME_SETTINGS

问题是django.conf导入没有失败,因为安装了django。那么问题是检查我是否在django内部的标准方法是什么?

感谢。

1 个答案:

答案 0 :(得分:3)

您可以将路径附加到Django应用程序,然后导入应用程序的设置并像在Django应用程序中一样使用它:

import sys, os
sys.path.append('/path/to/your/django/app')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.conf import settings

只要您正确设置,您也可以放弃sys.path.append

在Django内部,您可以检查DJANGO_SETTINGS_MODULE是否在os.environ中,然后加载它:

# If we are outside a Django app append the app path
#  to the python path to import the setting
if 'DJANGO_SETTINGS_MODULE' not in os.environ:
    sys.path.append('/path/to/your/django/app')
    os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

# This way the setting will be imported in both cases
from django.conf import settings