我正和朋友一起开发网页应用。我们正在使用Git,我们在同一个分支的同一部分。我们都在virtualenv中运行应用程序,并且我们已经安装了相同的依赖项,我们从需求文件中提取了这些依赖项。
一切都很好,直到当然不是。当我添加一些逻辑来处理某些表单时出现以下错误。我正在使用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
我们不知道发生了什么。任何帮助将非常感激!
答案 0 :(得分:4)
适用于旧版本的flask-wtf。
首先卸载当前版本:
pip uninstall flask-wtf
然后,安装旧版本:
pip install flask-wtf==0.8.4
答案 1 :(得分:2)
在版本0.9中,json(但它在0.10中)不是模块。您可以像这样使用它:
from flask import json
json.dumps(..)
json.JSONEncoder
这实际上是flask-wtf
中的向后兼容性错误。这已在最新版本的flask-wtf
在这里查看git diff:
我建议您使用flask-wtf
和flask
本身的最新版本。
答案 2 :(得分: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,了解有关包依赖关系的一些想法和最佳做法。