编写python包以在django内部和外部运行
我正在编写python helper包以在django项目内部运行,但我希望在其他常规python代码(例如django外部)中也使用它 问题是我想从django conf.settings中获取设置,如果它在django之外,则从其他模块获取设置。例如,类似于:编写python包以在django内部和外部运行,python,django,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.
try:
from django.conf import settings
except ImportError:
import my_settings as settings
value = settings.SOME_SETTINGS
问题是django.conf导入没有失败,因为安装了django。所以问题是,检查我是否在django内部的标准方法是什么
谢谢。您可以将路径附加到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\u设置\u模块是否在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
我不知道是否在django内部,但我认为使用virtualenvs将不同的项目彼此隔离是最好的做法。因此,您不需要安装django Gobaly,这意味着您可以为您的帮助程序包创建一个venv,然后它就找不到django了。替代方法可以是不使用导入,而是使用设置对象(例如通过某种init方法)对代码进行参数化。把django设置或你的设置传给我,我同意。但是,因为我希望我的代码被其他人使用——这没有帮助……我想检查我是否在django内部,所以我的代码可以从django设置(如果在django内部)配置,或者从专用设置(如果不在django内部)配置