2012-05-13 13 views
32

Nie mogę znaleźć modułu w python, chociaż easy_install mówi, że jest już zainstalowany. Każdy pomysł, jak rozwiązać ten problem?ImportError: Brak modułu o nazwie 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...

Choć pip mówi, że to installed.But nie mogę ich znaleźć w wyjściu sys.path.

$ 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

Rozpoczęte bounty - jak znalazłem ten problem again.After instalując pakiet za pomocą pip „pip zainstalować python- bcrypt "dzisiaj. –

Odpowiedz

8

Ok, mam ponownie zainstalować pakiet poprzez pip nawet to nie pomogło. A potem zsynchronizowałem cały katalog /usr/lib/python-2.7 z innej działającej maszyny o podobnej konfiguracji do obecnej maszyny. Zaczął działać. Nie mam pojęcia, co było nie tak z moją konfiguracją. Widzę pewne różnice wyjściowe "print sys.path" wcześniej i teraz. ale teraz mój problem został rozwiązany przez tę pracę.

EDYCJA: Znaleziono prawdziwe rozwiązanie dla mojej konfiguracji. uaktualnienie "sqlalchemy tylko nie rozwiązuje problemu" Muszę również zaktualizować flask-sqlalchemy, który rozwiązał problem.

+0

To obejście nie pomaga teraz, ponieważ moja druga maszyna nie działa :( –

+2

dlaczego po prostu nie używasz virtualenv? –

+2

to dlatego, że twoje pakiety lib/site twojego Pythona-env są zanieczyszczone przez złą wersję sqlchemy, a easy_install/pip najpierw tam znajdź i sprawdź "easy-install.pth" lub "setuptools.pth" dla zainstalowanych pakietów, i zatrzymuje się, jeśli znajdą zepsutą wersję; – pinkdawn

2

Ten kod działa perfekcyjnie:

import sqlalchemy 

Może zainstalowany pakiet w innej wersji interpretera?

Ponadto, jak wskazał Shawley, należy zainstalować kolbę, aby była dostępna.

+0

no..even to nie pomogło "python -c "z flaskext.sqlalchemy importowej SQLAlchemy" Traceback (najnowsza połączeń ostatni): Plik" ”, wiersz 1, w ImportError: No module o nazwie sqlalchemy " –

+0

-1 Istnieje' klasa SQLAlchemy' w rozszerzeniu sqlalchemy kolby ... – schlamar

57

Czy zainstalowałeś flaskext.sqlalchemy? Wygląda na to, że masz zainstalowany pakiet SQLAlchemy, ale nie rozszerzenie kolby. Wypróbuj pip install Flask-SQLAlchemy lub easy_install Flask-SQLAlchemy. Jest to available in the cheeseshop, więc albo narzędzie powinno go podnieść.

+0

hmm..its zainstalowano także" easy_install Kolba-SQLAlchemy wyszukiwania skrzynkowego SQLAlchemy Najlepszy mecz: skrzynkowego SQLAlchemy 0,16 Dodawanie skrzynkowego SQLAlchemy 0.16 do łatwego instalowania pliku.pth Używanie /usr/lib/python2.7/site-packages Przetwarzanie zależności dla Flask-SQLAlchemy Kończone zależności przetwarzania dla Flask-SQLAlchemy " –

+0

Na Ubuntu 12.04, instalacja pip Flask-SQLAlchemy załatwiła sprawę dla mnie. –

+1

Właśnie dodałem błąd, który miałem. Używałem virtualenv i napotykałem ten problem. Uruchomienie 'pip install Flask-SQLAlchemy' ** bez sudo ** sprawiło, że zadziałało. – willcwf

31

Po prostu doświadczyłem tego samego problemu. Wygląda na to, że istnieje nowa metoda dystrybucji, kod rozszerzenia nie jest już przechowywany pod numerem flaskext.

Źródło: Kolba CHANGELOG

Ten pracował dla mnie:

from flask_sqlalchemy import SQLAlchemy 
+0

Dzięki za aktualizację.Nadzieję, że będzie to pomocne dla kogoś :) –

+2

Lub 'from flask.ext.sqlalchemy import SQLAlchemy' – schlamar

+0

Uratowałem mój dzień ....' 'od flask.ext.sqlalchemy nie działa dla mnie' ' –

3

Więc tutaj jest pomysł!

Ponieważ wydawało się, że działa gdzie indziej.

zainstalować python-virtualenv i opcjonalnie można zainstalować virtualenv-wrapper (co jest całkiem fajne do tworzenia projektów i tak dalej)

W każdym env, może mieć różne wersje jaj. Innymi słowy, możesz mieć sqlalchemy 1 i sqlaclhemy 1.5 w dwóch różnych środowiskach i nie będą one w konflikcie ze sobą. Wygląda na to, że masz problem z aktualnie zainstalowanymi jajami.

Więc zaczynamy:

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

Parametr --no-site-pakiety stworzy virtualenv i nie korzystać z pakietów już zainstalowanych na komputerze. To prawie jak instalacja gołą pytona.

source foo/bin/activate ładuje virtualenv.

To nie jest tak naprawdę przyjazne dla użytkownika. I dlatego istnieje http://www.doughellmann.com/projects/virtualenvwrapper/.

Powiedziawszy, powinieneś zobaczyć coś podobnego do tego w twoim terminalu "(foo) user @ domain $:" po aktywowaniu virtualenv. Oznacza to, że możesz iść dalej!

Następnie musisz zrobić.

python setup.py develop twojego projektu. Powinien pobrać i zainstalować zależności projektu w virtualenv pod numerem foo. Jeśli musisz zainstalować cokolwiek innego, użyj pip lub easy_install bez korzystania z sudo. Podczas korzystania z virtualenv, prawie nigdy nie musisz używać sudo. Sudo zainstaluje pakiet w globalnej instalacji pythona, gdy nie jest to wymagane i naprawdę nie jest pożądane.

Jeśli coś dzieje się w twoim virtualenv, zawsze możesz go usunąć i utworzyć nowy. To nie jest wielka sprawa. Nie musisz z niczym zadzierać. Nie działa? zacznij od nowa, w razie potrzeby wykonaj pip install -U, w razie potrzeby określ wersje i tak dalej.

Wreszcie, w innych odpowiedziach wydaje się, że import został zmieniony. Jeśli nowe wersje dla kolby-sqlalchemy znajdują się gdzie indziej, należy zaktualizować import lub zainstalować wersję, której używałeś.

6

Działa to dla mnie:

sudo pip install flask_sqlalchemy 
sudo pip install sqlalchemy 

Następnie w użyciu kodu:

from flask_sqlalchemy import SQLAlchemy 
+0

Tak, oto przykład: https://github.com/mitsuhiko/flask-sqlalchemy/blob/master/examples/hello.py – obohovyk

Powiązane problemy