Python: SQLAlchemy ImportError: нет модуля с именем pysqlite2

Я использую python 2.7.3, который я вручную установил в свой домашний каталог, так как у меня нет root-доступа. В системе установлена ​​2.6.6, а мне очень нужна 2.7. Когда я запускаю приложение, SQLAlchemy выдает эту ошибку ImportError. Итак, я знаю, что pysqlite2 теперь sqlite3 в 2.7, поэтому я предполагаю, что он запутался в том, какая версия python установлена.

Вот трассировка:

[11/Jan/2013:16:04:57] ENGINE Listening for SIGHUP.
[11/Jan/2013:16:04:57] ENGINE Listening for SIGTERM.
[11/Jan/2013:16:04:57] ENGINE Listening for SIGUSR1.
[11/Jan/2013:16:04:57] ENGINE Bus STARTING
[11/Jan/2013:16:04:57] ENGINE Starting up DB access
[11/Jan/2013:16:04:57] ENGINE Error in 'start' listener <bound method SAEnginePlugin.start of <giraffe.sa.saplugin.SAEnginePlugin object at 0x239c6d0>>
Traceback (most recent call last):
  File "/assetuser/lib/python2.7/site-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/process/wspbus.py", line 197, in publish
    output.append(listener(*args, **kwargs))
  File "/assetuser/giraffe_server/giraffe/sa/saplugin.py", line 35, in start
    self.sa_engine = create_engine('sqlite:///giraffe.db', echo=False)
  File "/assetuser/lib/python2.7/site-packages/sqlalchemy/engine/__init__.py", line 338, in create_engine
    return strategy.create(*args, **kwargs)
  File "/assetuser/lib/python2.7/site-packages/sqlalchemy/engine/strategies.py", line 64, in create
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "/assetuser/lib/python2.7/site-packages/sqlalchemy/dialects/sqlite/pysqlite.py", line 286, in dbapi
    raise e
ImportError: No module named pysqlite2

CherryPy Checker:
dir is an absolute path, even though a root is provided.
section: [/Project]
root: '/assetuser/giraffe_server/static'
dir: '/assetuser/Project'

[11/Jan/2013:16:04:57] ENGINE Started monitor thread 'Autoreloader'.
[11/Jan/2013:16:04:57] ENGINE Started monitor thread '_TimeoutMonitor'.
[11/Jan/2013:16:04:57] ENGINE Serving on 0.0.0.0:8080
[11/Jan/2013:16:04:57] ENGINE Shutting down due to error in start listener:
Traceback (most recent call last):
  File "/assetuser/lib/python2.7/site-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/process/wspbus.py", line 235, in start
    self.publish('start')
  File "/assetuser/lib/python2.7/site-packages/CherryPy-3.2.2-py2.7.egg/cherrypy/process/wspbus.py", line 215, in publish
    raise exc
ChannelFailures: ImportError('No module named pysqlite2',)

[11/Jan/2013:16:04:57] ENGINE Bus STOPPING
[11/Jan/2013:16:04:57] ENGINE HTTP Server cherrypy._cpwsgi_server.CPWSGIServer(('0.0.0.0', 8080)) shut down
[11/Jan/2013:16:04:57] ENGINE Stopped thread 'Autoreloader'.
[11/Jan/2013:16:04:57] ENGINE Stopped thread '_TimeoutMonitor'.
[11/Jan/2013:16:04:57] ENGINE Shutting down DB access
[11/Jan/2013:16:04:57] ENGINE Bus STOPPED
[11/Jan/2013:16:04:57] ENGINE Bus EXITING
[11/Jan/2013:16:04:57] ENGINE Bus EXITED

person Ben Davis    schedule 11.01.2013    source источник
comment
Вы можете включить полную трассировку, чтобы мы не догадывались. Мое предположение: библиотека sqlite3 не скомпилирована, sqlalchemy возвращается к pysqlite2 только в том случае, если sqlite3 не найден. Вам необходимо установить пакет sqlite-dev или аналогичный.   -  person Martijn Pieters    schedule 11.01.2013
comment
Да, вам нужно установить файл разработки sqlite при компиляции python, иначе sqlite3 будет недоступен.   -  person Kien Truong    schedule 11.01.2013
comment
Хорошо, это имеет смысл. Итак, либо я могу установить пакет Python sqlite-dev, либо установить sqlite при компиляции? Можете ли вы уточнить, что вы подразумеваете под файлом разработки sqlite? Спасибо, парни.   -  person Ben Davis    schedule 11.01.2013
comment
Некоторые дистрибутивы Linux разделяют библиотеки на пакеты заголовков и двоичные пакеты библиотек. Заголовки нужны только при компиляции пакетов, поэтому они не всегда устанавливаются. Эти заголовочные пакеты часто имеют суффикс -dev или -devel. Вы должны искать библиотеку с такими именами, как sqlite-dev, libsqlite-dev и т. д. Эти имена варьируются от дистрибутива к дистрибутиву.   -  person Kien Truong    schedule 11.01.2013
comment
Хорошо, значит ли это, что двоичные файлы библиотеки для sqlite уже установлены, и мне просто нужны заголовки, чтобы эти библиотеки можно было использовать? У меня также будет проблема, что у меня нет root. Какие пути используются при компиляции для поиска заголовков?   -  person Ben Davis    schedule 11.01.2013
comment
Для всех, у кого может быть аналогичная проблема: http://stackoverflow.com/questions/1462565/what-are-sqlite-development-headers-and-how-to-install-them   -  person Ben Davis    schedule 11.01.2013
comment
Вы должны написать ответ на свой вопрос, а затем принять его, чтобы все знали, как решить проблему. Вашего комментария достаточно, но давайте держать вещи в чистоте.   -  person Wookie88    schedule 26.06.2013


Ответы (1)