2013-05-13 145 views
3

我有以下文件夹结构
的Django从另一个包导入另一个文件

 
app/ 
app/helpers/ 
app/helpers/methodhelper.py 
app/methods/ 
app/methods/method.py 

,我试图从methodhelper.py导入内部method.py功能
所以我尝试了以下内容:

 
import app.helpers.methodhelper 
OR 
from app.helpers.methodhelper import function1 
OR 
import helpers.methodhelper 

,我也得到:

"No module named app.helpers.methodhelper" 

需要注意的:helpers/__init__.py已经存在

应该如何进行?

+0

,当我去到应用程序/方法与控制台并运行“蟒蛇-i method.py” – Asaf 2013-05-13 20:41:34

+0

是否'应用程序/ __ __初始化。py'存在我得到这个错误? – orokusaki 2013-05-13 20:47:09

+0

怎么样'从helpers.methodhelper进口function1',我猜,这个问题与方法'manage.py'定义 – karthikr 2013-05-13 20:47:14

回答

2

Django项目的默认路径是在项目(其中manage.py文件)的根目录。您可以在下面的子目录添加到您的PYTHONPATH(由附加到sys.path中很容易做到),也可以使用完整的模块路径导入功能:

from projectname.app.helpers.methodhelper import function1

当我开始一个Django项目,我总是添加

PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))

settings.py。此路径类似于/home/kyle/django_project_name/。里面直接是manage.py

从那里,也在我settings.py,我包括:

sys.path.append(os.path.join(PROJECT_ROOT, 'django_project_name'))

这让我的应用可导入,而不需要包括模块路径我的项目名称。

+0

是的,'来自app.helpers.methodhelper import function1'应该可以工作,我只是测试了一下。 – DrKaoliN 2013-05-13 21:15:54

+0

看来我的Eclipse控制台不包括PYTHONPATH到项目中,奇..现在,当我使用KDE的Konsole ..想法有关自动添加路径到Eclipse控制台的工作? – Asaf 2013-05-13 21:22:57

+0

@Asaf是Eclipse控制台只是一个Python的REPL?如果是这样,你可以导入sys并追加到sys.path – Kyle 2013-05-13 21:27:42