【问题标题】:How to Import Another Python 3 File in Django Settings.py?如何在 Django Settings.py 中导入另一个 Python 3 文件?
【发布时间】:2018-02-28 23:08:00
【问题描述】:

我正在使用 Python 3。 我在同一个目录中有两个 Python 文件:first.py 和 second.py。 在 first.py 的开头,我使用:

from second import *

但是,它返回以下错误消息:

ModuleNotFoundError: No module named 'second'

我应该如何在 first.py 中导入它?

更新:为了阐明我的具体用例,我试图在 Django 中拆分我的 settings.py。我有一个主要的 settings.py 文件和另一个只包含机密信息的文件。我关注了this following documentation,它在 settings.py 中使用了以下行:

from settings_local import *

请注意,settings_local.py 位于同一目录中。但是,它返回以下错误消息:

ModuleNotFoundError: No module named 'settings_local'

我知道文档说“下面列出的一些示例需要修改以与 Django 1.4 及更高版本兼容。”但我不知道如何在 Python 3 中使用它。

【问题讨论】:

  • 您从哪里运行脚本?您应该能够从运行脚本的文件夹中包含的 Python 文件导入。如果您从与脚本相同的文件夹中运行脚本,则不会出现此错误。
  • 基本上,我试图在 Django 中拆分我的 settings.py。我有一个主要的 settings.py 文件和另一个只包含机密信息的文件。我遵循了以下文档,但它不起作用:code.djangoproject.com/wiki/…

标签: django python-3.x import importerror django-settings


【解决方案1】:

我刚刚找到了解决方案:

from .settings_local import *

代替:

from settings_local import *

我在this thread找到了解决方案。

【讨论】:

    【解决方案2】:

    可以使用以下代码sn-p:

    from .settings_local import *
    

    这是相对导入。 More Info herehere

    【讨论】:

      【解决方案3】:

      您可以通过这种方式将文件添加到 Python 中

      import sys
      sys.path.insert(0, '/path/to/application/app/folder')
      import file
      

      【讨论】:

      • 感谢您的回答。但是当文件在同一个路径时,为什么要给它一个绝对路径呢?
      • 绝对路径更清晰:)
      【解决方案4】:
      you can create __init__.py in current directory.
      

      那么你可以使用:

      from second import *
      

      init.py 文件是 Python 将目录视为包含包所必需的;这样做是为了防止具有通用名称(例如字符串)的目录无意中隐藏模块搜索路径中稍后出现的有效模块。在最简单的情况下,init.py 可以只是一个空文件,但它也可以执行包的初始化代码或设置 __all__ 变量,稍后介绍。

      【讨论】:

        【解决方案5】:

        您应该能够自动将文件所在的目录添加到PATH,然后导入另一个文件,这样:

        import sys
        import os
        sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
        import second
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-02-26
          • 1970-01-01
          • 2019-05-23
          • 2019-05-23
          • 1970-01-01
          • 2020-08-18
          • 2020-04-28
          • 2018-05-15
          相关资源
          最近更新 更多