2

我正在和朋友一起开发一个网络应用程序。我们正在使用 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

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

4

3 回答 3

4

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

首先卸载当前版本:

pip uninstall flask-wtf

然后,安装旧版本:

pip install flask-wtf==0.8.4
于 2013-08-18T22:43:46.493 回答
2

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

from flask import json

json.dumps(..)
json.JSONEncoder

这实际上是flask-wtf. 这在最新版本的 flask-wtf 中已修复

在这里查看 git diff:

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

我建议你们都使用两者的最新flask-wtf版本flask

于 2013-08-18T16:38:35.880 回答
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在每台计算机上执行 a,您将看到安装的实际版本不同。我的建议是您将版本添加到所有软件包,然后在两台计算机上重新安装虚拟环境。只有这样,您才能确定两者是 100% 一致的。

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

于 2013-09-04T16:00:24.287 回答