从子文件夹引用Django应用

2 投票
1 回答
777 浏览
提问于 2025-04-18 01:34

我在一个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下使用的是Django 1.6和Python 2.7,并且是在一个虚拟环境里。

1 个回答

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__))))

撰写回答