2013-08-18 28 views
2

我正在與一位朋友開發一個Web應用程序。我們使用Git,而且我們處於同一分支的同一部分。我們都在virtualenv中運行應用程序,並且我們已經安裝了相同的依賴項,我們從需求文件中提取了這些依賴項。Ubuntu上的Flask無法找到Flask.json

一切都很好,直到它當然不是。當我添加一些邏輯來處理某些表單時,出現以下錯誤。我正在使用OS X 10.8.4使用Macbook Pro並使用Ubuntu 12:04LTS。我可以運行應用程序沒有問題,但是當他運行它時,他會得到以下錯誤。

from flask.json import dumps, JSONEncoder 
ImportError: No module named json 
Traceback (most recent call last): 
    File "../run.py", line 1, in <module> 
    from app import app 
    File "/home/nadil/really-scrapable-web-app/app/_init_.py", line 6, in <module> 
    from app import views 
    File "/home/nadil/really-scrapable-web-app/app/views.py", line 3, in <module> 
    from forms import LoginForm 
    File "/home/nadil/really-scrapable-web-app/app/forms.py", line 1, in <module> 
    from flask.ext.wtf import Form, TextField, BooleanField 
    File "/home/nadil/v/scrapable/local/lib/python2.7/site-packages/flask_wtf/_init_.py", line 16, in <module> 
    from .recaptcha import * 
    File "/home/nadil/v/scrapable/local/lib/python2.7/site-packages/flask_wtf/recaptcha/_init_.py", line 2, in <module> 
    from .fields import * 
    File "/home/nadil/v/scrapable/local/lib/python2.7/site-packages/flask_wtf/recaptcha/fields.py", line 3, in <module> 
    from . import widgets 
    File "/home/nadil/v/scrapable/local/lib/python2.7/site-packages/flask_wtf/recaptcha/widgets.py", line 5, in <module> 
    from flask.json import dumps, JSONEncoder 
ImportError: No module named json 

的代碼位於:https://github.com/matthewhughes/really-scrapable-web-app

我們不知道是怎麼回事。任何幫助將非常感激!

回答

2

在版本0.9 json(但它在0.10)不是一個模塊。您可以使用它像這樣:

from flask import json 

json.dumps(..) 
json.JSONEncoder 

這實際上是在flask-wtf一個向後compatibiliy錯誤。這是固定在燒瓶跆拳道

最新版本見git的差異這裏:

https://github.com/ajford/flask-wtf/commit/6dea39dd2f130571c0028f1de6e489260fa01d47#flask_wtf/recaptcha/widgets.py

我建議你兩個同時使用flask-wtfflask本身的最新版本。

+0

我正在使用Flask 0.9。我只是好奇,爲什麼我的代碼在Mac上安裝相同的軟件包,而不是在運行Ubuntu的計算機上運行在同一個Virtualenv中。 –

+0

經過一番調查後編輯了我的答案 –

+0

非常感謝!我嘗試了最新版本,但沒有運氣。 :( –

4

它適用於舊版本的flask-wtf。

先卸載當前版本:

pip uninstall flask-wtf 

然後,安裝舊版本:

pip install flask-wtf==0.8.4 
0

至於實際的問題,我與UKU的答案達成一致。 Flask-WTF 0.9和更改爲支持Flask 0.10,而這些更改無意中打破了對Flask 0.9的支持。如果你將Flask-WTF降級到0.8.4,或者將你的Flask升級到0.10,你會沒事的。

關於您爲什麼在Mac上運行但不在您朋友的Ubuntu筆記本電腦上的問題,請注意您的requirements.txt文件未指定所有軟件包的確切版本。如果您在這些計算機上執行pip freeze,您會看到安裝的實際版本不同。我的建議是,您將版本添加到所有軟件包,然後在兩臺計算機上重新安裝虛擬環境。只有這樣你才能確定兩者是100%對齊的。

查看我的文章The Package Dependency Blues瞭解有關包依賴關係的一些想法和最佳實踐。

相關問題