python - Django ImportError 没有命名的模块

标签 python django

我已经在谷歌上搜索了一整天,但没有找到解决方案,希望你能帮忙:

使用 Django 1.6,我制作了一个名为“builds”的应用程序,作为名为“computerbuilder”的项目的一部分。

当我使用测试服务器时,该网站工作正常,但是我创建了一个文件来用一些项目填充数据库,当我运行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()

这是我制作的“builds”应用程序中的 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。

最佳答案

您需要在 dev 文件夹中添加 init.py。因为它被视为一个Python包。接下来,您需要在 fillDB.py 中添加 django 项目路径,如下所示,

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

希望这对你有帮助

关于python - Django ImportError 没有命名的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23209242/

相关文章:

python - DJANGO:通过 QuerySet except() 进行 FK 字段查找

python - 使用 djcelery 时 Revoke、Terminate 和 Kill 有什么区别?

django - Docker - psql : django. db.utils.OperationalError: FATAL: 角色 "admin"不存在

python - 在 django 上应用迁移时出现 "relation "Social_auth_code "does not exist"

python - 使用 scipy.linalg.solve_triangular 求解 xA=b

python - 用除数字以外的空格替换字符串中的字符

python - 带有 Bokeh nyc_taxi 示例的 MemoryError

python - 在字符串中执行 IP 反转

django - 在 Django View 中设置语言

python - 如何在测试时将 Django/DRF 中的日期时间转换为字符串