热门标签:
Q:

Ubuntu上的Flask无法找到Flask。json格式

我正在和一个朋友一起开发一个web应用程序。 我们使用的是Git,我们在同一个分支的同一部分。 我们都在virtualenv中运行应用程序,并且安装了相同的依赖项,我们从需求文件中提取了这些依赖项。

一切都很好,直到当然不是。当我添加一些逻辑来处理某些表单时,出现了以下错误。 我正在使用使用OS x10.8.4的Macbook Pro进行此工作,他正在使用Ubuntu12: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

我们不知道发生了什么。 任何帮助将不胜感激!

原网址
A:

它适用于旧版本的flask-wtf。

首先卸载当前版本:

pip uninstall flask-wtf

然后,安装旧版本:

pip install flask-wtf==0.8.4

所有回答

共 2 条

author avatar

在版本0.9json(但它是在0.10)不是一个模块。 你可以这样使用它:

from flask import json

json.dumps(..)
json.JSONEncoder

这实际上是flask-wtf中的一个向后兼容的bug。 这在flask-wtf的最新版本中得到了修复

在这里看到git差异:

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

我建议你们都使用flask-wtfflask本身的最新版本。

author avatar

就实际问题而言,我同意Uku的答案。 Flask-WTF0.9和up被改变为支持Flask0.10,并且这些改变无意中打破了对Flask0.9的支持。 如果您将Flask-WTF降级到0.8.4,或者将Flask升级到0.10,您就可以了。

关于为什么它可以在Mac上运行,但不能在朋友的Ubuntu笔记本电脑上运行的问题,请注意,您的requirements.txt文件没有为所有软件包指定确切的版本。 如果你在每台电脑上做pip freeze,你会看到实际安装的版本是不同的。 我的建议是,您将版本添加到所有软件包,然后在两台计算机上重新安装虚拟环境。 只有这样你才能确定两者是100%对齐的。

有关包依赖关系的一些想法和最佳实践,请参阅我的文章The Package Dependency Blues

相似问题