【问题标题】:Pysqlite2 error while starting django project启动 django 项目时出现 Pysqlite2 错误
【发布时间】:2017-07-25 16:29:28
【问题描述】:

我试图从头开始一个 django 项目,但我有一个错误提示 "ImportError: No Module Named 'pysqlite2'"

我正在使用 Python 3.6.0。我将编写我遵循的步骤


Creating project 

> django-admin startproject testproject

Trying to start an app

> python manage.py startapp demo

Immediately after enters that command, it returns me a long text which includes error's path etc.

Traceback (most recent call last):
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 34, in <module>
    from pysqlite2 import dbapi2 as Database
ModuleNotFoundError: No module named 'pysqlite2'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 36, in <module>
    from sqlite3 import dbapi2 as Database
  File "/usr/local/lib/python3.6/sqlite3/__init__.py", line 23, in <module>
    from sqlite3.dbapi2 import *
  File "/usr/local/lib/python3.6/sqlite3/dbapi2.py", line 27, in <module>
    from _sqlite3 import *
ModuleNotFoundError: No module named '_sqlite3'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
    utility.execute()
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/core/management/__init__.py", line 341, in execute
    django.setup()
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/apps/config.py", line 199, in import_models
    self.models_module = import_module(models_module_name)
  File "/home/berkin/pythonenv/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/contrib/auth/models.py", line 4, in <module>
    from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/contrib/auth/base_user.py", line 52, in <module>
    class AbstractBaseUser(models.Model):
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/db/models/base.py", line 119, in __new__
    new_class.add_to_class('_meta', Options(meta, app_label))
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/db/models/base.py", line 316, in add_to_class
    value.contribute_to_class(cls, name)
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/db/models/options.py", line 214, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/db/__init__.py", line 33, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/db/utils.py", line 211, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/db/utils.py", line 115, in load_backend
    return import_module('%s.base' % backend_name)
  File "/home/berkin/pythonenv/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/home/berkin/pythonenv/local/lib/python3.6/site-packages/django/db/backends/sqlite3/base.py", line 39, in <module>
    raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc)
django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named '_sqlite3'

我尝试了什么? - 我使用 sudo apt get 安装了 sqlite3-dev ... - 我试图安装 pip install pysqlite2 - 我尝试更改虚拟 env 文件夹中的 source.py,但没有成功。

但我发现当我不使用虚拟环境时,我的意思是不输入源/bin/activate,“python manage.py startapp demo”命令已经起作用。当我激活 env 时,它会返回我上面提到的错误。

【问题讨论】:

  • 当您在激活的 virtualenv 中运行此命令时,pip freeze | grep pysql 的输出是什么?
  • @matyas 它什么也不返回:(
  • 只有pip freeze ?
  • appdirs==1.4.2 Django==1.10.6 olefile==0.44 打包==16.8 Pillow==4.0.0 psycopg2==2.7 pyparsing==2.1.10 六==1.10.0

标签: python django


【解决方案1】:

根据这个答案https://stackoverflow.com/a/23414147/2174832

Python 3.x 没有公开版本的 pysqlite。对于 Python 3.x, 标准库中的 sqlite3 模块是最新的 有 pysqlite 版本。

在激活的 virtualenv 中运行命令 pip install sqlite3 并使用此模块而不是 pysqlite2。要激活您的 virtualenv,请转到 /folderofvirtualenv/bin 并运行命令source activate

【讨论】:

  • 收集 pysqlite2 找不到满足 pysqlite2 要求的版本(来自版本:)没有找到 pysqlite2 的匹配分布
  • 您使用哪个版本的 python(2 或 3)来创建您的 virtualenv?
  • 好的问题是由于 pysqlite2 和 python3 的结合而发生的,我相应地更新了我的答案。
  • 谢谢,但我想我需要配置我的 python 对吗?我现在该怎么办?在这种情况下我无法启动应用程序
  • 您需要在 settings.py 文件中将 sqlite3 设置为您的 django 数据库后端:docs.djangoproject.com/en/1.10/ref/settings 之后运行python manage.py syncdb,您应该能够在代码中使用您的模型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多