我正在尝试使用“manage.py shell”加载以下Python文件。 manage.py脚本位于父目录中,我正在使用包含该脚本的目录中的execfile('forms.py')。
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']
我的问题是我认为明确的相对导入是好东西(参见Two Scoops),我仍然认为它们是。
但现在我需要一个与manage.py一起使用的解决方法。
答案 0 :(得分:0)
你需要在python shell中进行相对导入之前更改当前目录。所以这可能有效:
import os
os.chdir('apps/')
from django.forms import ModelForm
from .models import Profile