2017-09-20 69 views
1

我正在使用Python 3. 我在同一个目录中有两个Python文件:first.py和second.py。 在first.py的开始,我用:如何在Django Settings.py中导入另一个Python 3文件?

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.

+1

你从哪里运行脚本?您应该能够从运行脚本的文件夹中包含的Python文件导入。如果您从脚本的相同文件夹运行脚本,则不应该出现此错误。 –

+0

基本上,我想在Django中拆分我的settings.py。我有一个主settings.py文件,另一个只包含机密信息。我遵循以下文档,但它不起作用:https://code.djangoproject.com/wiki/SplitSettings#Multiplesettingfilesimportingfromeachother – 1man

回答

1

我只是找到了解决办法:

from .settings_local import * 

而不是:

from settings_local import * 

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

0

您可以添加文件到Python中这样

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

感谢您的回答。但是当文件处于相同的路径时,为什么我应该给它一个绝对路径? – 1man

+0

绝对路径中更清晰:) –

0
you can create __init__.py in current directory. 

那么你可以使用:

from second import * 

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

+0

我已经在同一个目录中有init.py。 – 1man

+0

@ 1man'对不起,__init __。py' – wwl1991

+0

是的,我已经有了那个文件。这是由Django创建的。 – 1man

0

你应该能够自动添加目录中的文件是在对PATH,然后导入其他文件,与此:

import sys 
import os 
sys.path.insert(0, os.path.dirname(os.path.realpath(__file__))) 
import second 
相关问题