Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编写python包以在django内部和外部运行_Python_Django - Fatal编程技术网

编写python包以在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.

我正在编写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内部的标准方法是什么


谢谢。

您可以将路径附加到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内部)配置