2014-04-06 65 views
2

我從Python人口腳本引用Django應用程序。從子文件夾引用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

似乎沒有要任何東西Django的具體位置,它看起來像你剛纔沒有你的'PYTHONPATH'適當設置。 –

+0

你在使用virtualenv嗎? – Jiloc

+0

@Dorian:是的,我正在使用virtualenv。讓我更新這個問題。 – SaeX

回答

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__)))) 
相關問題