【问题标题】:Django database migration errorDjango 数据库迁移错误
【发布时间】:2018-10-21 04:11:15
【问题描述】:

我有一个连接到 Gmail API 的 Django 项目。 当我尝试进行数据库迁移时,它会返回:

C:\Users\Peter\Desktop\FastProject>python manage.py migrate FastProject
Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\__init__.py", l
ine 371, in execute_from_command_line
    utility.execute()
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\__init__.py", l
ine 365, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\base.py", line
288, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\base.py", line
332, in execute
    self.check()
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\base.py", line
364, in check
    include_deployment_checks=include_deployment_checks,
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\commands\migrat
e.py", line 58, in _run_checks
    issues.extend(super()._run_checks(**kwargs))
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\management\base.py", line
351, in _run_checks
    return checks.run_checks(**kwargs)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\checks\registry.py", line
73, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\checks\urls.py", line 13,
in check_url_config
    return check_resolver(resolver)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\checks\urls.py", line 23,
in check_resolver
    return check_method()
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\urls\resolvers.py", line 397, i
n check
    for pattern in self.url_patterns:
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\utils\functional.py", line 36,
in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\urls\resolvers.py", line 536, i
n url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\utils\functional.py", line 36,
in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\urls\resolvers.py", line 529, i
n urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\Peter\Desktop\FastProject\FastProject\urls.py", line 21, in <module>
    path('', include('mainApp.urls')),
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\site-packages\django\urls\conf.py", line 34, in incl
ude
    urlconf_module = import_module(urlconf_module)
  File "C:\Users\Peter\AppData\Local\Programs\Python\Python36\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\Peter\Desktop\FastProject\mainApp\urls.py", line 3, in <module>
    from . import views
  File "C:\Users\Peter\Desktop\FastProject\mainApp\views.py", line 2, in <module>
    from quickstart import go
ModuleNotFoundError: No module named 'quickstart'

我也尝试过“makemigrations”和旧的“syncdb”,但第一个给出了相同的错误,第二个不再使用。我使用 SQLite3。这是我的设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'results_db.sqlite3'),
    }
}

“quickstart”是我从中调用函数的文件。我猜所有的名字都是正确的,所以我不知道有什么问题。这是之前的错误,但我决定稍后再考虑。

谢谢。

【问题讨论】:

  • 是你自己的文件吗?
  • 如果是你自己的文件,你应该把它放在一个文件夹中,然后在目录中添加一个空白的__init__.py文件,基本上是创建一个python包。
  • @Lemayzeur 是的,我通过 Google 指南连接到 Gmail API,所以该文件中的所有代码都来自 Google 网站,但文件是我自己创建的。 PyCharm 给了我一个安装“快速启动”包的解决方案,所以我有一个你正在谈论的 int.py。这里:ibb.co/fdvaRJ

标签: python django database sqlite migration


【解决方案1】:

我对该快速入门文件进行了一些操作。首先我在每个文件夹'init.py'中创建,然后我在应用程序目录中创建了一个空文件夹并将ndropped 'quickstart.py'并在那里创建了一个空的“init”文件.不起作用:错误刚刚从 ModuleNotFoundError: No module named 'quickstart' 更改为 ModuleNotFoundError: No module named 'api.quickstart'。

然后我删除了 2 分钟前创建的所有“init”文件,将“quickstart”文件放回我的应用程序的根文件夹,并拖放了一个“init”文件。

错误变成像“ from quickstart import go ImportError: cannot import name 'go' "。我接下来所做的只是将 "from quickstart import go" 更改为 "import quickstart",然后调用 go 函数,如 "quickstart.go()"

文字太多,为了更好地理解图片:

https://ibb.co/fdvaRJ

https://ibb.co/kzgPmJ

https://ibb.co/jyjVty

【讨论】:

    【解决方案2】:

    肯定和这行有关:

       File "C:\Users\Peter\Desktop\FastProject\mainApp\views.py", line 2, in <module>
        from quickstart import go
    ModuleNotFoundError: No module named 'quickstart'
    

    看起来您缺少quickstart 模块。它与一些教程有关吗?也许您忘记激活您的虚拟环境?

    更新:

    如果你有这样的项目结构https://ibb.co/fdvaRJ,你应该使用本地导入或提供包的完整路径:

    from .quickstart import go
    

    from mainApp.quickstart import go
    

    或者你可以把你的 quickstart.py 模块上一层然后使用

    from quickstart import go
    

    就像你现在做的那样。

    别忘了查看 Python 打包和模块的官方指南:https://docs.python.org/3/tutorial/modules.html#packages

    【讨论】:

    • 是的,但不是文件,只是其中的代码。它来自 Gmail API 快速入门指南。我去了views.py,但“从快速入门导入go”甚至不是红色的,似乎还可以
    • 我认为你的模块结构有问题,你最好看看这个官方的python打包指南,特别注意__init__.py文件:docs.python.org/3/tutorial/modules.html#packages
    猜你喜欢
    • 2015-08-08
    • 2019-01-09
    • 2016-04-08
    • 1970-01-01
    • 2015-06-08
    • 2015-04-06
    • 2018-03-04
    • 2014-05-05
    相关资源
    最近更新 更多