2017-09-20 68 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 
相關問題