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

9
我该如何在Windows上永久设置环境变量DJANGO_SETTINGS_MODULE并完成它?
我的意思是:
  1. Win键 + 暂停/中断键
  2. 这将导航到控制面板\系统和安全\系统
  3. 点击高级系统设置
  4. 点击环境变量
  5. 有两个框,第一个标题为用户变量,第二个为系统变量
  6. 系统变量上点击新建按钮
  7. 对于变量名称,请输入DJANGO_IMPORT_SETTINGS
XXX--> 我应该在变量值中放什么来一劳永逸地设置它?
在这个 问题 的 Django 网站中写道:
当你使用 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工作,只需要指向一个有效的settings文件,默认情况下它会查找名为DJANGO_SETTINGS_MODULE的环境变量来告诉它在哪里找到设置。该变量的值应该是设置文件的Python导入路径,例如cms.settings。
--> 这是什么类型的目录:cms.settings?在Windows中,每个目录都以硬盘驱动器开头,如C:\Something.....。你如何在Windows中启动这样的目录?
编辑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.py,并且在C:\Python27\pysec-master中有一个settings.py。您可以在这里找到完全相同的副本。 可能重要的编辑 我的项目中有一个名为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设置目录,例如C:\ Python27 \ Lib \ site-packages \ django \ db

你能永久地使用一个 DJANGO_SETTINGS_MODULE 吗?还是每个项目都必须更改它?有人能帮帮我吗?我已经卡了好几天了... - ExoticBirdsMerchant
2个回答

20

好的,请不要太沮丧。让我们逐步来看:

  • 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
    
    假设你想要导入到main.py中的方法是read_file,那么这种通过在每个模块之间用.分隔的方式导入模块被称为Python路径语法。
    PYTHONPATH:
    在上面的例子中,只有当Python解释器知道要查找第一个模块utils所在的位置时,导入语句才能正常工作。只有找到了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应用程序需要一个设置文件,其中您可以指定许多内容。为了指示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.settings或者mysite.settings时,它们指的是cms或者mysite是你的项目名称,而settings.py是你的设置文件的名称。

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

    你可以把它永久地设置到Windows的环境变量中吗?当然可以。
    这是正确的方法吗?不是。

    因为如果你明天想在另一个位置创建另一个应用程序,你就必须在Windows的环境变量部分编辑它。此外,为开发环境使用不同的设置文件,为生产环境使用另一个设置文件是一个惯例。因此,在一个地方设置一个值会使它变得不灵活。但是,如果你已经了解了以上所有内容,并确信你只会使用一个设置文件,则可以在环境变量部分将DJANGO_SETTINGS_MODULE设置为myproject.site_settings.dev_settings

    希望这可以帮助你!

    编辑:

    看起来你正在将pysec-master项目放在C:\Python27中。不要把你的项目放在Python安装目录中。在你的项目中创建一个settings.py文件,并将DJANGO_SETTINGS_MODULE设置为pysec-master.settings


那么如果pysec-master是我的项目名称,我必须将其输入为pysec-master.settingsIDLEcmd中?如果在cmd中,我必须进入该目录,然后在cmd中键入它?我会尝试一下,然后再在Python的IDLE中尝试。 - ExoticBirdsMerchant
1
@ExoticBirdsMerchant 修改了我的回答。 - shaktimaan
是的,我的项目在C:\Python27文件夹中。作为一个初学者,我认为这是最明智的做法。但现在看来并不是这样。我现在要更改位置... - ExoticBirdsMerchant
你说过:将你的DJANGO_SETTINGS_MODULE设置为pysec-master.settings,关于此有两个热门问题...1)在cmd或者IDLE中?2)我需要像这样放置目录 C:\pysec-master.settings 中的pysec_master.settings吗? - ExoticBirdsMerchant
我必须将它设置在settings.py文件中吗? - ExoticBirdsMerchant
显示剩余2条评论

3
您说:
所有我想做的就是设置一次 DJANGO_SETTINGS_MODULE 环境变量,以摆脱这个麻烦。
如果您不想每次都进行繁琐的操作,您无需永久设置,只需要将操作自动化即可。
创建一个批处理文件并在其中输入 set DJANGO_SETTINGS_MODULE='xxx.settings'。
如果您使用 virtualenv,则可以在 bin/activate.bat 中设置环境变量。

抱歉,我不知道什么是“bat”文件(不过我会去了解的)。你说过:“'xxx.settings'”,我的问题是:难道你不需要在Windows环境下放置指向我的项目pysec-master的目录吗?就像这样C:\pysec-master.settings... 我刚才说的最后一个是正确的吗? - ExoticBirdsMerchant
我必须将它设置在settings.py文件中吗? - ExoticBirdsMerchant
我需要把Windows目录C:\pysec-master放在设置中吗? - ExoticBirdsMerchant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接