2014-03-01 23 views
2

我试图用“manage.py shell”加载下面的Python文件。 manage.py脚本位于父目录中,我使用包含该脚本的目录中的execfile('forms.py')。manage.py shell和相对导入

from django.forms import ModelForm 
from .models import Profile 

class ProfileSearchForm(ModelForm): 
    class Meta: 
     model = Profile 
     fields = ['name'] 

失败的原因是明确的相对进口:

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "forms.py", line 2, in <module> 
    from .models   import Profile 
ImportError: No module named models 

,但如果我切换到隐相对进口,它的工作原理:

from django.forms import ModelForm 
from apps.myprofile.models import Profile 

class ProfileSearchForm(ModelForm): 
    class Meta: 
     model = Profile 
     fields = ['name'] 

我的问题是,我认为,明确的相对进口是好东西(见两勺),我仍然认为他们是。

但现在我需要一个解决manage.py的解决方法。

回答

0

您需要在python shell的相对导入之前更改当前目录。所以这可能有效:

import os 
os.chdir('apps/') 
from django.forms import ModelForm 
from .models import Profile 
+0

我得到一个“没有这样的文件或目录”的错误。当我输入: import os print(os.getcwd()+“\ n”) 我得到包含Python源文件的目录。另外,我正在使用“execfile('forms.py')”,它从包含forms.py的目录执行。 – highpost

+0

我很抱歉在'os.chdir'中给出了错误的路径。 – defool