在Windows中将DJANGO_SETTINGS_MODULE永久设置为环境变量

时间:2014-04-18 14:48:12

标签: python django environment-variables

如何永久性地在DJANGO_SETTINGS_MODULE上永久设置环境变量WINDOWS并完成它?

我的意思是

  1. Win Button + Pause/Break Button
  2. 这会导致Control Panel\System and Security\System
  3. 点击Advanced System Settings
  4. 点击Environment Variables
  5. 有两个框,第一个标题为User variables,第二个System variables
  6. System variables点击New Button
  7. 对于放在DJANGO_IMPORT_SETTINGS
  8. 中的变量名称

    XXX - > 我应该为变量值设置一次并为所有人设置?


    在这个issue的Django网站上,它声明:

    DJANGO_SETTINGS_MODULE

    当您使用Django时,您必须告诉它您正在使用哪些设置。通过使用环境变量DJANGO_SETTINGS_MODULE。

    来完成此操作

    DJANGO_SETTINGS_MODULE的值应该是Python路径语法,例如。 mysite.settings。请注意,设置模块应位于Python导入搜索路径上。


    这是什么意思 ...应该是Python路径语法,例如mysite.settings ......

    • 我有Python所在的某个目录: C:\Python27
    • 我的Django所在的某个目录位于C:\Python27\Lib\site-packages\django

    mysite意味着什么。它是什么目录C:\Something......

    你可以一劳永逸地使用这个变量,或者你必须不断为每个项目改变它(我希望不会!)

    这个可疑行是什么意思 请注意,设置模块应位于Python导入搜索路径上。

    所有我想要它设置DJANGO_SETTINGS_MODULE环境变量并且从这个麻烦中一劳永逸地完成

    修改

    为了工作,Django必须指向有效的设置文件,默认情况下 查找名为DJANGO_SETTINGS_MODULE的环境变量,告诉它在哪里找到 设置。此变量的值应该是设置文件的Python导入路径,例如 作为cms.settings。

    - >目录王是这个:cms.settings?在Windows中,每个目录都以 C:\ Something ..... 的硬盘驱动器开头。如何在Windows中启动这样的目录?

    EDIT_2

    摘自一本书

    问题 环境变量DJANGO_SETTINGS_MODULE未定义。

    运行命令python manage.py shell而不是python

    我的问题 - >关于什么目录?///你可以设置它还是每个项目都不同?

    我的项目就像这样结构

    C:\Python27\pysec-master(file)
    |__local_settings.py
    |__manage.py
    |__settings.py
    |__C:\Python27\pysec(file)
       |__ __init__.py
       |__example.py
       |__models.py
       |__xbrl.py
       |__xbrl_fundamentals.py
    

    我正在尝试运行models.pysettings.py中有C:\Python27\pysec-master 您可以找到完整的副本here

    MAYBE_IMPORTANT_EDIT

    我的项目中有一个名为manage.py的文件,其中包含这些内容

    #!/usr/bin/env python
    import os
    import sys
    
    if __name__ == "__main__":
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
    
        from django.core.management import execute_from_command_line
    
        execute_from_command_line(sys.argv)
    

    这是否必须在设置变量时执行任何操作?我是否需要在循环中设置此处?

    修改

    对于IDLE from django.db import settings中的命令,我是否需要设置PYTHON_MODULE_SETTINGS的{​​{1}}目录?

2 个答案:

答案 0 :(得分:13)

好的,不要那么沮丧。让我们一步一步地看一下:

  • Python路径语法:

    在Python中,当您跨模块拆分代码库时,可以使用模块名称限定导入的名称。假设您的项目结构如下:

    my_project
    |__utils
    |  |____init__.py
    |  |__file_utils.py
    |__my_module
       |____init__.py
       |__main.py
    

    main.py中,如果您要访问file_utils.py中定义的方法,可以在main.py中添加导入语句,如下所示:

    import utils.file_utils.read_file
    

    假设read_file是要导入main.py的方法。这种导入模块的方法是将每个模块分开.,称为python路径语法。

  • PYTHONPATH:

    在上面的例子中,只有当Python解释器知道在哪里查找第一个模块即utils时,import语句才有效。只有当找到utils时,才能找到file_utilsread_file。您可以在环境变量PYTHONPATH中指定希望解释器查看的所有路径的列表。因此,为了在代码中包含上述导入语句,您必须确保项目my_project的完整路径位于PYTHONPATH。假设my_project位于C:\AMAZEBALLS_CODE\my_project,您的C:\AMAZEBALLS_CODE

  • 应该PYTHONPATH
  • DJANGO_SETTINGS_MODULE:

    现在让我们假设你的my_project实际上是一个Django应用程序。 Django应用程序需要一个设置文件,您可以在其中指定whole bunch of things。为了指示Django查看哪个设置文件,请在DJANGO_SETTINGS_MODULE中指定它。假设这是您的项目结构:

    my_project
    |__utils/
    |  |____init__.py
    |  |__file_utils.py
    |__my_module/
    |  |____init__.py
    |  |__main.py
    |__site_settings/
       |__dev_settings.py
       |__production_settings.py
    

    myroject.site_settings是Django必须查看设置文件的模块。 myroject.site_settings.dev_settings是您在上述情况下需要设置为DJANGO_SETTINGS_MODULE的值。当文档说明cms.settingsmysite.settings时,它们表示cmsmysite是项目的名称,settings.py是您的设置文件的名称。

现在让我们来看看你的问题:

您可以在Windows的环境变量中永久设置它吗?当然。
这是正确的方法吗?没有。

因为如果您希望明天在另一个位置创建另一个应用程序,则必须在Windows的环境变量部分中对其进行编辑。此外,实践中使用不同的设置文件用于开发环境,另一个用于生产。因此,将其设置在一个具有一个值的位置会使其不灵活。但是如果您了解上述所有内容并确定您将仅使用env变量部分中的DJANGO_SETTINGS_MODULEmyproject.site_settings.dev_settings的一个设置文件。

希望这有帮助!

编辑:

您似乎将pysec-master项目放在C:\Python27中。不要将您的项目放在python安装中。在项目中创建settings.py文件,并将DJANGO_SETTINGS_MODULE设置为pysec-master.settings

答案 1 :(得分:3)

你说:

  

我只想设置DJANGO_SETTINGS_MODULE环境变量   并且从这个麻烦中一劳永逸地完成

如果您不希望每次都经历繁琐的程序,那么您不必将其永久化,您只需要自动执行此程序。

创建一个蝙蝠并将set DJANGO_SETTINGS_MODULE='xxx.settings'放入其中。

如果您使用的是virtualenv,则可以在bin / activate.bat中设置环境变量。