2012-05-28 85 views
14

我在我的rhel 5上安裝了django 1.4。默認情況下rhel 5有python 2.4,但是使用django 1.4我手動安裝python 2.7.3 開發服務器運行良好,但是當我創建一個新項目,並將settings.py文件更改爲:Django - 沒有名爲_sqlite3的模塊

'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 

請建議出路?

+0

待辦事項http://stackoverflow.com/questions/8114946/how-do-i-set-up-sqlite-with-a-django-project和http://stackoverflow.com/questions/1210664/no-module-named-sqlite3的幫助? – okm

+0

我對Python 3.4有這個錯誤,當我選擇python 3.5時我沒有這個問題 –

回答

6

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) 

命名sqlite3pysqlite2沒有安裝模塊的那麼一個。 嘗試安裝它們

$ pip install sqlite3 # or pysqlite2 

更新

sqlite3pysqlite2是Python中的一部分,因此這兩個包不是PyPi了。

+2

現在這是Python的一部分(如果使用此選項編譯),所以在pip存儲庫中沒有任何sqlite3軟件包:https: //pypi.python.org/pypi/sqlite3和https://pypi.python.org/pypi/pysqlite2 – Dereckson

+0

@Dereckson我已經更新了有關您評論的答案。謝謝 –

+7

@AlirezaSavand我用python 3.5.2使用django 1.10.3,但我仍然面臨這個錯誤。任何解決方案 – Jayesh

2

sqlite3是從2.5版本開始的Python的一部分。安裝這個庫:

sudo apt-get install libsqlite3-dev 

或者你也可以嘗試安裝Python-dev軟件包。

1

我在使用Red Hat的源代碼構建Python 2.6.8時遇到了同樣的問題(但這可能適用於其他OS上的其他版本)。

我的問題是由之前安裝的sqlite-devel的(紅帽)配置和建設蟒蛇解決(或者在你的build目錄做config.status --recheck,其次是makemake install

5

我的時候很類似的錯誤信息我試圖運行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

+0

在python 2.6和更早版本的情況下需要安裝pysqlite作爲單獨的lib。 – simar

4

這就是我所做的工作。

我使用pythonbrew(這是使用點)與python 2.7.5安裝。

我第一次做了什麼祖貝爾(上圖)說,跑這條命令:

sudo apt-get install libsqlite3-dev 

然後我跑這個命令:

pip install pysqlite 

這種固定的數據庫問題,我得到的這個時候確認我跑了:

python manager.py syncdb 
4

在MacOSX 10.9(小牛),我不得不運行這個命令:

CPPFLAGS=-I/usr/local/opt/sqlite/include; LDFLAGS=-L/usr/local/opt/sqlite/lib; pip install pysqlite 

我用自制軟件安裝sqlite3。

brew update; brew install sqlite 
+0

感謝這個修復了我 –

19

您也可以用人工編制蟒蛇沒有源碼開發庫安裝

所以,做

sudo apt-get install libsqlite3-dev libsqlite3 

然後,通過輸入

重新安裝python

測試

python 
>>> import sqlite3 
+1

請注意,pyenv安裝將(今天)警告缺少libzip-devel和readline,但不會丟失sqlite3-devel丟失。 – TauPan

+0

如果您打算執行任何調試,您可能還想使用'apt-get install libsqlite3-0-dbg'來安裝調試庫。 – MikeyE

0

FreeBSD10:爲python3.5

pkg install py35-sqlite3 
相關問題