如何在Django Settings.py中导入另一个Python 3文件?

时间:2017-09-20 03:20:29

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

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

from second import *

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

ModuleNotFoundError: No module named 'second'

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

更新:为了澄清我的具体用例,我试图将我的settings.py拆分为Django。我有一个主要的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中使用它。

5 个答案:

答案 0 :(得分:2)

我刚刚找到解决方案:

from .settings_local import *

而不是:

from settings_local import *

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

答案 1 :(得分:2)

您可以使用以下代码段:

from .settings_local import *

这是相对重要的。 More Info herehere

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

you can create __init__.py in current directory.

然后你可以使用:

from second import *

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

答案 4 :(得分:0)

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

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