从子文件夹引用Django应用程序

时间:2014-04-06 08:58:02

标签: python django

我在Python人口脚本中引用了一个Django应用程序。

当人口脚本放在与my_project相同的文件夹中时,这一切正常,如下所示:

if __name__ == '__main__':
    print "Starting population script..."
    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'my_project.settings')
    from persons.models import Person, Contact
    populate()

但是现在我正在尝试将我的人口脚本(不是Django应用程序)移动到名为population/的子文件夹中。尝试此操作时会抛出以下错误:

ImportError: No module named persons.models

所以我尝试将导入更改为绝对导入:from my_project.persons.models import Person, Contact

然而,这会产生ImportError: No module named my_project.persons.models

我尝试使用相对导入,from .my_project.persons.models import Person, Contact,但会产生ValueError: Attempted relative import in non-package

我做错了什么?

我在Windows下的virtualenv中使用了Django 1.6和Python 2.7。

1 个答案:

答案 0 :(得分:1)

使用您的编辑编辑我的答案,这是解决方案:

 #append the app path to your PYTHONPATH before the import
 import sys
 import os

 sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))