Django - нет модуля с именем _sqlite3
У меня установлен django 1.4 на моем rhel 5. По умолчанию у rhel 5 есть python 2.4, но для использования django 1.4 я вручную установил python 2.7.3
Сервер разработки работает нормально, но когда я создаю новый проект и после изменения файла settings.py как:
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/home/oracle/Desktop/test1/my.db'
Теперь, когда я предоставляю команду python2.7 manage.py syncdb, я получаю ошибку как:
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
Пожалуйста, предложите выход?
Ответы
Ответ 1
На django.db.backends.sqlite3 он пытается
try:
try:
from pysqlite2 import dbapi2 as Database
except ImportError:
from sqlite3 import dbapi2 as Database
except ImportError as exc:
from django.core.exceptions import ImproperlyConfigured
raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc)
Итак, один из модулей с именем sqlite3 или pysqlite2 не установлен.
Попробуйте установить их
$ pip install sqlite3 # or pysqlite2
Обновление
sqlite3
и pysqlite2
являются частью Python, поэтому эти два пакета больше не находятся в PyPi.
Ответ 2
Вы также можете скомпилировать python вручную без установленной библиотеки разработки sqlite
Итак, do
sudo apt-get install libsqlite3-dev libsqlite3
Затем переустановите python
введя
python
>>> import sqlite3
Ответ 3
У меня получилось очень похожее сообщение об ошибке при попытке запустить сервер разработки Django:
ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): dlopen(/Users/Rubinous/Projects/Jiiri2/jiiri_venv/lib/python2.7/lib-dynload/_sqlite3.so, 2): Library not loaded: /usr/local/opt/sqlite/lib/libsqlite3.0.8.6.dylib
Referenced from: /Users/Rubinous/Projects/Jiiri2/jiiri_venv/lib/python2.7/lib-dynload/_sqlite3.so
Reason: image not found
Я решил это, установив модуль pysqlite
Python с pip install pysqlite
.
Ответ 4
Это то, что я сделал, чтобы заставить его работать.
Я использую pythonbrew (который использует pip) с установленным python 2.7.5.
Сначала я сделал то, что сказал Zubair (выше) и выполнил эту команду:
sudo apt-get install libsqlite3-dev
Затем я выполнил следующую команду:
pip install pysqlite
Это фиксировало проблему с базой данных, и я получил подтверждение этого при запуске:
python manager.py syncdb
Ответ 5
В MacOSX 10.9 (Mavericks) мне пришлось запустить эту команду:
CPPFLAGS=-I/usr/local/opt/sqlite/include; LDFLAGS=-L/usr/local/opt/sqlite/lib; pip install pysqlite
Я использовал homebrew для установки sqlite3.
brew update; brew install sqlite
Ответ 6
sqlite3 является частью Python с версий 2.5 и более. Установите этот lib:
sudo apt-get install libsqlite3-dev
Или вы также можете попробовать установить пакет Python-dev.
Ответ 7
У меня была та же проблема с python 2.6.8, созданным из исходного кода в Red Hat (но это, вероятно, относится к другим версиям на другой ОС).
Моя проблема была решена путем установки конфигурации sqlite-devel (Red Hat) до и создания python (или do config.status --recheck
в вашем каталоге сборки, за которым следуют make
и make install
.
Ответ 8
FreeBSD10: для python3.5
pkg install py35-sqlite3