2014-10-05 78 views
0

我知道已經有很多人有這個問題,但我花了最後三個小時去了每一個我能找到的鏈接,我一直沒能找到解決方案爲我工作。我很尷尬不得不做這個線程,但我沒有其他選擇。探戈與Django:沒有模塊名爲_sqlite3

我一直在做的探戈Django的,一切都非常順利,直到我得到了這部分運行:http://www.tangowithdjango.com/book/chapters/models.html#creating-and-synchronising-the-database

在做執行syncdb命令,巨蟒不承認sqlite3的。所以我決定用一個簡單的導入測試來驗證這一點:

[email protected]:~/code/tango_with_django_project$ python 
Python 2.7.5 (default, Sep 21 2014, 16:23:05) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sqlite3 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/home/rob/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/sqlite3/__init__.py", line 24, in <module> 
    from dbapi2 import * 
    File "/home/rob/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/sqlite3/dbapi2.py", line 27, in <module> 
    from _sqlite3 import * 
ImportError: No module named _sqlite3 
>>> 

很多人在網上也有這個相同的問題。這傢伙

https://stackoverflow.com/a/1210746/694855

提出了一些建議,以找到_sqlite3.so,並把該目錄中的PYTHONPATH。我再次運行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/dist-packages/django/core/management/__init__.py", line 453, in execute_from_command_line 
    utility.execute() 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 392, in execute 
    self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 263, in fetch_command 
    app_name = get_commands()[subcommand] 
    File "/usr/local/lib/python2.7/dist-packages/django/core/management/__init__.py", line 109, in get_commands 
    apps = settings.INSTALLED_APPS 
    File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 53, in __getattr__ 
    self._setup(name) 
    File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 49, in _setup 
    self._configure_logging() 
    File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 71, in _configure_logging 
    from django.utils.log import DEFAULT_LOGGING 
    File "/usr/local/lib/python2.7/dist-packages/django/utils/log.py", line 6, in <module> 
    from django.views.debug import ExceptionReporter, get_exception_reporter_filter 
    File "/usr/local/lib/python2.7/dist-packages/django/views/debug.py", line 11, in <module> 
    from django.http import (HttpResponse, HttpResponseServerError, 
    File "/usr/local/lib/python2.7/dist-packages/django/http/__init__.py", line 2, in <module> 
    from django.http.request import (HttpRequest, QueryDict, UnreadablePostError, 
    File "/usr/local/lib/python2.7/dist-packages/django/http/request.py", line 8, in <module> 
    from io import BytesIO 
    File "/home/rob/.pythonbrew/pythons/Python-2.7.5/lib/python2.7/io.py", line 51, in <module> 
    import _io 
ImportError: /usr/lib/python2.7/lib-dynload/_io.so: undefined symbol: PyUnicodeUCS4_EncodeUTF32 

現在我卡住了。我搜索了最後一個錯誤,找不到多少。關於我的Python如何使用不同的Unicode進行編譯。這並沒有告訴我如何解決這個問題。

感謝您的閱讀和幫助。

回答

0

固定。我看到這樣的響應:

https://stackoverflow.com/a/19748196/694855

然而,當我跑pip install pysqlite我收到這樣的:

[snipped] 
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DMODULE_NAME="pysqlite2.dbapi2" -DSQLITE_OMIT_LOAD_EXTENSION=1 -I/usr/include/python2.7 -c src/module.c -o build/temp.linux-x86_64-2.7/src/module.o 

In file included from src/module.c:24:0: 

src/connection.h:26:20: fatal error: Python.h: No such file or directory 

compilation terminated. 

error: command 'gcc' failed with exit status 1 
[snipped] 

事實證明,我沒有安裝Python開發的文件。我想通了這一點,從這個帖子:http://www.linuxquestions.org/questions/linux-software-2/apparent-gcc-error-when-building-pysqlite-697318/#post3408711

所以我跑:sudo apt-get install python-dev

然後,我可以成功運行:pip install pysqlite

最後,現在當我從Django的教程中運行以下命令:./manage.py syncdb

我得到正確的輸出。我希望這可以幫助別人,因爲這個解決方案很複雜,很難在網上找到。

+0

我不確定你爲什麼要在Python 2.7中安裝'pysqlite',因爲'sqlite3'基本上是相同的,並且是標準庫的一部分。您應該在安裝必要的代碼以使其工作之後重新構建Python。我同意這令人困惑的是,當Python構建過程不能構建它自己的標準庫時,它不會窒息而死亡。 – 2014-10-06 01:09:36

相關問題