2012-05-13 11 views
32

Ich kann kein Modul in Python finden, obwohl easy_install sagt, dass es bereits installiert ist. Irgendeine Idee, wie man dieses isseue auflöst?ImportError: Kein Modul namens sqlalchemy

$ python -c "from flaskext.sqlalchemy import SQLAlchemy" 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
ImportError: No module named sqlalchemy 


$ python -V 
Python 2.7 


$ sudo easy_install sqlalchemy 
Searching for sqlalchemy 
Best match: SQLAlchemy 0.7.7 
Adding SQLAlchemy 0.7.7 to easy-install.pth file 

Using /usr/lib/python2.7/site-packages 
Processing dependencies for sqlalchemy 
Finished processing dependencies for sqlalchemy 

$ sudo pip install SQLAlchemy --upgrade Requirement already up-to-date: SQLAlchemy in /usr/lib/python2.7/site-packages Cleaning up...

Obwohl Pip sagt es installed ist ich sie nicht in sys.path Ausgang finden.

$ sudo python -c "import sys;print sys.path" ['', 
'/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-0.15-py2.7.egg', 
'/usr/lib/python2.7/site-packages/Flask-0.8-py2.7.egg', 
'/usr/lib/python2.7/site-packages/Jinja2-2.6-py2.7.egg', 
'/usr/lib/python2.7/site-packages/Werkzeug-0.8.3-py2.7.egg', 
'/usr/lib/python2.7/site-packages/Flask_WTF-0.5.2-py2.7.egg', 
'/usr/lib/python2.7/site-packages/WTForms-0.6.3-py2.7.egg', 
'/usr/lib/python2.7/site-packages/Flask_Mail-0.6.1-py2.7.egg', 
'/usr/lib/python2.7/site-packages/blinker-1.2-py2.7.egg', 
'/usr/lib/python2.7/site-packages/lamson-1.1-py2.7.egg', 
'/usr/lib/python2.7/site-packages/python_daemon-1.6-py2.7.egg', 
'/usr/lib/python2.7/site-packages/nose-1.1.2-py2.7.egg', 
'/usr/lib/python2.7/site-packages/mock-0.8.0-py2.7.egg', 
'/usr/lib/python2.7/site-packages/chardet-1.0.1-py2.7.egg', 
'/usr/lib/python2.7/site-packages/lockfile-0.9.1-py2.7.egg', 
'/usr/lib/python2.7/site-packages/Flask_FlatPages-0.2-py2.7.egg', 
'/usr/lib/python2.7/site-packages/Markdown-2.1.1-py2.7.egg', 
'/usr/lib/python2.7/site-packages/PyYAML-3.10-py2.7-linux-i686.egg', 
'/usr/lib/python2.7/site-packages/uWSGI-1.0.3-py2.7.egg', 
'/usr/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-linux-i686.egg', 
'/usr/lib/python27.zip', '/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-linux2', '/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', 
'/usr/lib/python2.7/site-packages', 
'/usr/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info'] 
+0

eine Prämie Started - Als ich ein Paket mit pip „dieses Problem gefunden pip installieren again.After Installation python bcrypt "heute. –

Antwort

8

Okay, ich habe das Paket über pip neu installiert, auch die nicht helfen. Und dann rsync'ed das gesamte Verzeichnis /usr/lib/python-2.7 von anderen Arbeitsmaschine mit ähnlicher Konfiguration zu der aktuellen Maschine.Es begann zu arbeiten. Ich habe keine Ahnung, was mit meinem Setup los war. Ich sehe etwas Unterschied "print sys.path" Ausgabe früher und jetzt. Aber jetzt wird mein Problem durch diese Arbeit gelöst.

EDIT: Die richtige Lösung für meine Einrichtung gefunden. upgraded "sqlalchemy löst nur das Problem nicht" Ich muss auch flask-sqlalchemy aktualisieren, die das Problem behoben.

+0

Diese Problemumgehung hilft jetzt nicht, da mein anderer Rechner heruntergefahren war :( –

+2

warum benutzt du nicht einfach virtualenv? –

+2

es ist, weil Ihre lib/site-Pakete von Ihrem Python-env mit einer schlechten Version von sqlchemy verschmutzt sind, und easy_install/pip finden Sie zuerst dort und überprüfen Sie Ihre "easy-install.pth" oder "setuptools.pth" für installierte Pakete, und stoppt, wenn sie eine kaputte Version finden; – pinkdawn

2

arbeitet Dieser Code perfekt:

import sqlalchemy 

Vielleicht installieren Sie das Paket in einer anderen Version des Dolmetschers?

Auch, wie Shawley darauf hingewiesen hat, müssen Sie die Flasche Erweiterung installiert haben, damit es zugänglich ist.

+0

no..even die "Python -c "von flaskext.sqlalchemy Import sqlalchemy nicht helfen" Traceback (jüngste Aufforderung zuletzt): File" “Linie 1 in Import: Kein Modul sqlalchemy benannt " –

+0

-1 Es ist die' SQLAlchemy' Klasse in der sqlalchemy Kolben Erweiterung ... – schlamar

57

Haben Sie flaskext.sqlalchemy installiert? Es sieht so aus, als ob Sie das SQLAlchemy-Paket installiert haben, aber nicht die flask-Erweiterung. Versuchen Sie pip install Flask-SQLAlchemy oder easy_install Flask-SQLAlchemy. Es ist available in the cheeseshop, also sollte irgendein Dienstprogramm es aufheben.

+0

hmm..its auch installiert" easy_install Flask-SQLAlchemy Suche nach Flask-SQLAlchemy Beste Treffer: Flask-SQLAlchemy 0,16 Hinzufügen Flask-SQLAlchemy 0.16 to easy-install.pth file Verwenden von /usr/lib/python2.7/site-packages Verarbeitungsabhängigkeiten für Flask-SQLAlchemy Beendete Verarbeitungsabhängigkeiten für Flask-SQLAlchemy " –

+0

Unter Ubuntu 12.04, pip install Flask-SQLAlchemy hat den Trick für mich gemacht. –

+1

fügte nur einen Fehler hinzu, den ich hatte. Ich benutzte virtualenv und begegnete diesem Problem. Running 'pip install Flask-SQLAlchemy' ** ohne sudo ** war, was es für mich funktioniert. – willcwf

31

Ich habe gerade das gleiche Problem erlebt. Offensichtlich gibt es eine neue Verteilungsmethode, der Erweiterungscode ist nicht mehr unter flaskext gespeichert.

Quelle: Flask CHANGELOG

Das ist für mich gearbeitet:

from flask_sqlalchemy import SQLAlchemy 
+0

Danke für die update.Hope wird es hilfreich sein, jemanden für :) –

+2

Oder 'von flask.ext.sqlalchemy Import SQLAlchemy' – schlamar

+0

meinen Tag gerettet ....' 'von flask.ext.sqlalchemy arbeitet nicht für me'' –

3

Also hier ist eine Idee!

Da schien es woanders zu arbeiten.

python-virtualenv installieren und Sie können optional virtualenv-Wrapper (was ziemlich cool ist es, Projekte zu erstellen und so weiter)

In jedem env, könnten Sie haben verschiedene Versionen von Eiern installieren. Mit anderen Worten, Sie könnten sqlalchemy 1 und sqlaclhemy 1.5 in zwei verschiedenen envs haben und sie werden nicht miteinander in Konflikt geraten. Es scheint, dass Sie ein Problem mit Ihren derzeit installierten Eiern haben.

So hier gehen wir:

virtualenv --no-site-packages foo 
source foo/bin/activate 

Der Parameter --no-site-packages ein virtualenv schaffen und die Pakete nicht bereits auf Ihrem Computer installiert verwenden. Es ist fast wie eine nackte Python-Installation.

source foo/bin/activate lädt die virtualenv.

Es ist nicht wirklich benutzerfreundlich. Und deshalb gibt es http://www.doughellmann.com/projects/virtualenvwrapper/ existiert.

Das heißt, Sie sollten etwas wie thant in Ihrem Terminal "(foo) user @ domain $:" sehen, sobald Ihr virtualenv aktiviert ist. Es bedeutet, dass du weitermachen kannst!

Dann müssen Sie tun.

python setup.py develop Ihres Projekts. Es sollte Abhängigkeiten von Ihrem Projekt in der virtualenv in foo herunterladen und installieren. Wenn Sie etwas anderes installieren müssen, verwenden Sie bitte pip oder easy_install, ohne sudo zu verwenden. Bei Verwendung von virtualenv müssen Sie fast nie sudo verwenden. Sudo installiert das Paket in Ihrer globalen Python-Installation, während es nicht benötigt wird und nicht wirklich wünschenswert ist.

Wenn etwas in Ihrem virtualenv passiert, können Sie es immer löschen und ein neues erstellen. Das ist keine große Sache. Kein Grund, sich mit irgendetwas anzulegen. Funktioniert nicht? neu beginnen, tun Sie pip install -U, wenn nötig, definieren Sie die Versionen, wenn nötig und so weiter.

Last, but not least, in den anderen Antworten scheint es, dass der Import geändert hat. Wenn sich die neuen Versionen von flask-sqlalchemy an einer anderen Stelle befinden, sollten Sie Ihren Import aktualisieren oder die Version installieren, die Sie verwendet haben.

6

Dies funktioniert für mich:

sudo pip install flask_sqlalchemy 
sudo pip install sqlalchemy 

Dann im Code verwenden:

from flask_sqlalchemy import SQLAlchemy 
+0

Ja, hier ist ein Beispiel: https://github.com/mitsuhiko/flask-sqlalchemy/blob/master/examples/hello.py – obohovyk