2014-04-22 99 views
1

我一直在谷歌上搜索這個整天和整個的解決方案還沒有來,希望你能幫助:Django的導入錯誤沒有模塊名爲

使用Django 1.6,我做了使用應用「構建」作爲項目的一部分稱爲「電腦製造商」。

該網站正常工作時,我用的是測試服務器,但我創建了一個文件來填充一些項目數據庫,它給我的錯誤,當我運行python fillDB.py

Traceback (most recent call last): 
    File "fillDB.py", line 1, in <module> 
     from builds.models import BuildsTable 
ImportError: No module named builds.models 

這是我的文件fillDB.py:

from builds.models import BuildsTable 

moboDB = open("db.txt", "r") 
lines = moboDB.read().split('\",') 
print lines 

def main(): 
    global lines 
    global BuildsTable 

for item in lines: 
    mobo = BuildsTable.objects.get(moboListing="%s" % item[0]) 
    price_local = BuildsTable.objects.get(moboListing="%s" % item[1]) 
    if(BuildsTable.objects.filter(
     moboListing = mobo, price = price_local).exists() == False): 
      mydb = BuildsTable(moboListing = mobo, price = price_local) 
      mydb.save() 

main() 

這是我的models.py文件從 「構建」 應用程序,我提出:

from django.db import models 
# Create your models here. 

class BuildsTable(models.Model): 
    id = models.AutoField(primary_key=True) 
    moboListing = models.CharField(max_length=200) 
    price = models.IntegerField() 

我的目錄看起來是這樣的:

├── builds 
│ ├── admin.py 
│ ├── __init__.py 
│ ├── models.py 
│ ├── tests.py 
│ └── views.py 
├── computerbuilder 
│ ├── dev 
│ │ ├── db.txt 
│ │ ├── fillDB.py 
│ ├── __init__.py 
│ ├── settings.py 
│ ├── urls.py 
│ ├── views.py 
│ ├── wsgi.py 
├── manage.py 
└── requirements.txt 

由於我使用一個外部文件不Django的一部分,我認爲這就是爲什麼它有麻煩認識它。如果有幫助,也使用postgres。

回答

1

您需要添加初始化的.py在開發中夾。因爲它被視爲一個python包。接下來,您需要添加Django項目路徑fillDB.py這樣,

Root 
├──├── builds 
    │ ├── admin.py 
    │ ├── __init__.py 
    │ ├── models.py 
    │ ├── tests.py 
    │ └── views.py 
    ├── computerbuilder 
    │ ├── dev 
    │ │ ├── db.txt 
    │ │ ├── fillDB.py 
    │ ├── __init__.py 
    │ ├── settings.py 
    │ ├── urls.py 
    │ ├── views.py 
    │ ├── wsgi.py 
    ├── manage.py 
    └── requirements.txt 

按照上面的文件夾結構, ,你也需要Django的環境變量設置爲這個文件。

fillDB.py

import sys 
import os 


if __name__ == "__main__": 
    sys.path.append('/path/Root') 
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "computerbuilder.settings") 

    from builds.models import BuildsTable 

    mobo = BuildsTable.objects.all() 
    print mobo 

希望這有助於你

+0

感謝,所以它說'sys.path。append('/ path/Root')'我必須將其更改爲我的項目頂層目錄的路徑? – achabacha322

+0

是的,你是對的。 – dhana

+0

謝謝,這工作!但現在我的代碼有另一個問題,將嘗試修復它,謝謝你的幫助 – achabacha322

1

檢查你的sys.path,看看是否有你的路徑。每次運行python項目時,python都會將當前路徑追加到sys.path中。一旦你退出python環境,python會刪除你添加的路徑。

你的問題是你運行只是運行fillDB.py,python只是追加'../computerbuilder/dev'到sys.path,所以蟒蛇找不到構建模塊。

解決的辦法是將你的fillDB.py文件到同一水平建立文件夾

├── builds  
├── fillDB.py 
│ ├── admin.py 
│ ├── __init__.py 
│ ├── models.py 
│ ├── tests.py 
│ └── views.py 
├── computerbuilder 
│ ├── dev 
│ │ ├── db.txt 
│ ├── __init__.py 
│ ├── settings.py 
│ ├── urls.py 
│ ├── views.py 
│ ├── wsgi.py 
├── manage.py 
└── requirements.txt 

希望它可以幫助你:d

+0

感謝您的幫助,我試着將文件移動到同一個目錄中「建立」,但我得到了同樣的錯誤,我也嘗試將它放在同一級別的單獨文件夾中,並得到相同的錯誤。 但我把'fillDB.py'文件在同一水平'manage.py'之後,我現在得到另一個錯誤: 'django.core.exceptions.ImproperlyConfigured:' '要求設置DEFAULT_INDEX_TABLESPACE,但設置沒有配置。您必須先定義環境變量 DJANGO_SETTINGS_MODULE或在訪問設置之前調用settings.configure()。# – achabacha322

相關問題