2014-04-22 130 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

相关问题