2012-05-13 188 views
32

我無法在python中找到模塊,雖然easy_install說它已經安裝。 任何想法如何解決這個問題?ImportError:沒有名爲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...

雖然PIP說,這是installed.But在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

開始賞金 - 因爲我發現這個問題again.After使用PIP「畫中畫安裝python-安裝包bcrypt「今天。 –

回答

8

好了,我已經重新安裝通過PIP封裝甚至沒有幫助。然後我rsync從其他工作機器的整個/usr/lib/python-2.7目錄中,具有與當前機器的 類似的配置。它開始工作。我不知道,我的設置有什麼問題。我在前面和現在看到了一些不同的「print sys.path」輸出。但現在我的問題通過這項工作得到解決。

編輯:找到我的設置真正的解決方案。升級「sqlalchemy只解決不了問題」我還需要升級flask-sqlalchemy解決了問題。

+0

這個解決方法現在沒有幫助,因爲我的其他機器已關閉:( –

+2

爲什麼你不使用virtualenv? –

+2

這是因爲你的python-env的lib/site-packages受到了sqlchemy版本的污染,easy_install/pip先找到並檢查你的「easy-install.pth」或「setuptools.pth」如果他們發現一個破碎的版本會停止; – pinkdawn

2

此代碼的工作完美:

import sqlalchemy 

也許你在解釋器的另一個版本安裝包?另外,就像Shawley指出的那樣,您需要安裝燒瓶延長管才能進入。

+0

no..even沒有幫助「蟒蛇-c‘從flaskext.sqlalchemy進口SQLAlchemy的’ 回溯(最近通話最後一個): 文件」 」,1號線,在 導入錯誤:沒有模塊名爲SQLAlchemy的 「 –

+0

-1有一個在SQLAlchemy的燒瓶延伸'SQLAlchemy'類... – schlamar

57

您是否安裝flaskext.sqlalchemy?它看起來像你已經安裝了SQLAlchemy包,但不是擴展瓶。試試pip install Flask-SQLAlchemyeasy_install Flask-SQLAlchemy。這是available in the cheeseshop,所以任何工具應該拿起它。

+0

hmm..its還安裝了」 easy_install的燒瓶SQLAlchemy的 搜索燒瓶SQLAlchemy的 最佳搭配:燒瓶SQLAlchemy的0.16 加入燒瓶的SQLAlchemy 0.16 to easy install.pth文件 使用/usr/lib/python2.7/site-packages 處理Flask-SQLAlchemy的依賴關係 完成Flask-SQLAlchemy的處理依賴關係 「 –

+0

在Ubuntu 12.04上,pip install Flask-SQLAlchemy爲我做了訣竅。 –

+1

只是增加了我遇到的錯誤。我正在使用virtualenv並遇到此問題。運行'PIP安裝Flask-SQLAlchemy' **沒有sudo **是什麼讓它爲我工作。 – willcwf

4

try this

from flask.ext.sqlalchemy import SQLAlchemy 
31

我剛剛經歷過同樣的問題。顯然,有一個新的分發方法,擴展代碼不再存儲在flaskext下。

來源:CHANGELOG

這爲我工作:

from flask_sqlalchemy import SQLAlchemy 
+0

感謝您的update.Hope它將有助於某人:) –

+2

或'從flask.ext.sqlalchemy導入SQLAlchemy' – schlamar

+0

保存我的一天....''從flask.ext.sqlalchemy不工作對我來說''' –

3

因此,這裏是一個想法!

因爲它似乎在其他地方工作。

安裝python-virtualenv 和可選您可以安裝的virtualenv,包裝(這是很酷創建項目等)

在每ENV,你可能有不同版本的蛋。換句話說,你可以在兩個不同的envs中使用sqlalchemy 1和sqlaclhemy 1.5,它們不會相互衝突。看來你的目前安裝的雞蛋有問題。

所以在這裏,我們去:

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

--no-站點包將創建一個virtualenv中,而不是使用已安裝在計算機上的軟件包的參數。這幾乎就像一個裸露的Python安裝。

source foo/bin/activate加載virtualenv。

這不是真的用戶友好。這就是爲什麼http://www.doughellmann.com/projects/virtualenvwrapper/存在。

這就是說,你應該在你的終端「(foo)user @ domain $:」中看到諸如thant之類的東西,一旦你的virtualenv被激活。這意味着你可以繼續!

然後你必須這樣做。

python setup.py develop您的項目。它應該下載並安裝位於foo的virtualenv中的項目依賴關係。如果您需要安裝其他任何東西,請使用pipeasy_install而不使用sudo。使用virtualenv時,幾乎不需要使用sudo。 Sudo將在您的全局python安裝中安裝軟件包,但它不是必需的,也不是真正需要的。

如果在你的virtualenv中發生了什麼,你總是可以刪除它並創建一個新的。這沒什麼大不了的。沒有必要惹惱任何東西。不起作用?重新開始,如果需要,請執行pip install -U,根據需要定義版本等等。

最後但並非最不重要,在其他答案中,似乎導入更改。如果flask-sqlalchemy的新版本位於其他位置,則應更新導入或安裝您以前使用的版本。

6

這個工作對我來說:

sudo pip install flask_sqlalchemy 
sudo pip install sqlalchemy 
在代碼中使用

然後:

from flask_sqlalchemy import SQLAlchemy 
+0

是的,這裏是一個例子: https://github.com/mitsuhiko/flask-sqlalchemy/blob/master/examples/hello.py – obohovyk

相關問題