Django - No module named _sqlite3

2019-04-03 10:26发布

I have django 1.4 installed on my rhel 5. By default rhel 5 has python 2.4 in it but to use django 1.4 I manually installed python 2.7.3 The development server is running fine but when I create a new project and after changing the settings.py file as :

'ENGINE': 'django.db.backends.sqlite3', 'NAME': '/home/oracle/Desktop/test1/my.db'

Now when I give python2.7 manage.py syncdb command, I get the error as:

Traceback (most recent call last):
 File "manage.py", line 10, in <module>
   execute_from_command_line(sys.argv)
 File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",
line 443, in execute_from_command_line
   utility.execute()
 File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",
line 382, in execute
   self.fetch_command(subcommand).run_from_argv(self.argv)
 File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",
line 261, in fetch_command
   klass = load_command_class(app_name, subcommand)
 File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py",
line 69, in load_command_class
   module = import_module('%s.management.commands.%s' % (app_name, name))
 File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py",
line 35, in import_module
   __import__(name)
 File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py",
line 8, in <module>
   from django.core.management.sql import custom_sql_for_model,
emit_post_sync_signal
 File "/usr/local/lib/python2.7/site-packages/django/core/management/sql.py",
line 6, in <module>
   from django.db import models
 File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py",
line 40, in <module>
   backend = load_backend(connection.settings_dict['ENGINE'])
 File "/usr/local/lib/python2.7/site-packages/django/db/__init__.py",
line 34, in __getattr__
   return getattr(connections[DEFAULT_DB_ALIAS], item)
 File "/usr/local/lib/python2.7/site-packages/django/db/utils.py",
line 92, in __getitem__
   backend = load_backend(db['ENGINE'])
 File "/usr/local/lib/python2.7/site-packages/django/db/utils.py",
line 24, in load_backend
   return import_module('.base', backend_name)
 File "/usr/local/lib/python2.7/site-packages/django/utils/importlib.py",
line 35, in import_module
   __import__(name)
 File "/usr/local/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py",
line 31, 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

Please suggest the way out?

9条回答
一夜七次
2楼-- · 2019-04-03 11:17

MordicusEtCubitus's answer is correct. Can't upvote you yet as am a newbie.

Just to add to your answer, on fedora(23) run the following command to install instead.

sudo dnf install libsqlite3x-devel libsqlite3x
查看更多
Anthone
3楼-- · 2019-04-03 11:20

sqlite3 is part of the Python from versions 2.5 onwards. Install this lib:

sudo apt-get install libsqlite3-dev

Or you can also try installing the Python-dev package.

查看更多
爷、活的狠高调
4楼-- · 2019-04-03 11:26

I had the same problem with python 2.6.8 built from source on Red Hat (but this probably holds for other versions on other OS).

My problem was solved by installing sqlite-devel (Red Hat) before configuring and building python (or do config.status --recheck in your build directory, followed by make and make install.

查看更多
登录 后发表回答