Python: SQLAlchemy ImportError: No module named-pysqlite2

Ich bin mit python 2.7.3, die ich manuell installiert in meinem home-Verzeichnis, da ich nicht über root-Zugriff. 2.6.6 installiert ist auf dem system, aber ich wirklich brauchen, 2.7. Wenn ich die app starte, SQLAlchemy wirft diese ImportError. Also ich weiß, dass pysqlite2 ist nun sqlite3 in 2.7, so dass ich vermute, es ist verwirrend, welche version von python installiert ist.

Hier ist ein traceback:

[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
  • Du könntest auch den vollständigen traceback zu vermeiden, dass uns erraten. Meine Vermutung: die sqlite3 Bibliothek wird nicht kompiliert, sqlalchemy nur fällt zurück auf pysqlite2 wenn sqlite3 nicht gefunden. Sie müssen die sqlite-dev Paket oder gleichwertig installiert.
  • Ja, Sie müssen sqlite development-Datei installiert, wenn Sie kompilieren von python, sonst sqlite3 nicht verfügbar.
  • Okay, das macht Sinn. Also entweder ich kann installieren Sie die sqlite-dev python-Paket, oder habe sqlite installiert, wenn ich kompilieren? Können Sie näher erläutern, was du damit meinst sqlite development-Datei? Danke Jungs.
  • Einige linux-Distribution separate Bibliotheken in die header-Pakete und die Bibliothek von Binär-Paketen. Die Kopfzeilen sind nur erforderlich, wenn Sie kompilieren Pakete, damit Sie nicht immer installiert. Diese header-Pakete sind oft suffix mit -dev oder -devel. Sollten Sie sich für eine Bibliothek mit Namen wie sqlite-dev, libsqlite-dev etc... Dieser name variiert von Distribution zu Distribution.
  • Okay, so bedeutet das, dass die Bibliothek-Binärdateien für sqlite bereits installiert sind und ich brauche nur den Header, so dass diese Bibliotheken können verwendet werden? Ich bin auch dabei, habe das problem, dass ich nicht die Wurzel. Beim kompilieren, welche Pfade verwendet werden, um zu versuchen und suchen Sie den Header?
  • Für alle anderen, die vielleicht ein ähnliches problem: http://stackoverflow.com/questions/1462565/what-are-sqlite-development-headers-and-how-to-install-them
  • Schreiben Sie eine aswer auf deine eigene Frage und dann zu akzeptieren, so wird jedermann wissen, wie das problem zu beheben. Ihr Kommentar ist ausreichend, aber lassen Sie die Dinge sauber zu halten.

InformationsquelleAutor Ben Davis | 2013-01-11
Schreibe einen Kommentar