简体   繁体   English

启动Django项目时出现Pysqlite2错误

[英]Pysqlite2 error while starting django project

Im trying to start a django project from scratch but i have an error that says "ImportError: No Module Named 'pysqlite2'" 我试图从头开始一个django项目,但是我遇到一个错误,提示“ ImportError:No Module Named'pysqlite2'”

I'm using Python 3.6.0. 我正在使用Python 3.6.0。 I will write steps which im following 我将编写以下步骤


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'

What i tried? 我尝试了什么? - I installed sqlite3-dev with using sudo apt get ... - I tried to install pip install pysqlite2 - I tried to alter source.py which is inside the virtual env folder but it wasnt worked. -我使用sudo apt get安装了sqlite3-dev ...-我尝试安装pip install pysqlite2-我试图更改位于虚拟env文件夹中的source.py,但没有用。

But i figured out that when im not using virtual env, i mean without entering source /bin/activate, "python manage.py startapp demo" command has worked. 但是我发现当我不使用虚拟环境时,我的意思是不输入源代码/ bin / activate,“ python manage.py startapp demo”命令已经起作用。 When i activate env, it returns an error which i mentioned above. 当我激活env时,它返回一个我上面提到的错误。

according to this answer https://stackoverflow.com/a/23414147/2174832 根据这个答案https://stackoverflow.com/a/23414147/2174832

There is no public version of pysqlite for Python 3.x. 没有适用于Python 3.x的pysqlite的公共版本。 For Python 3.x, the sqlite3 module in the standard library is the most up-to date version of pysqlite there is. 对于Python 3.x,标准库中的sqlite3模块是pysqlite的最新版本。

run the command pip install sqlite3 within your activated virtualenv and use this module instead of pysqlite2. 在激活的virtualenv中运行命令pip install sqlite3 ,并使用此模块代替pysqlite2。 To activate your virtualenv go to /folderofvirtualenv/bin and run the command source activate 要激活您的virtualenv,请转到/folderofvirtualenv/bin并运行命令source activate

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM