Python Flask 模块导入错误,涉及到未被导入的模块。

9

我在Google App Engine上运行了一个Flask应用程序。昨天,我部署了一个新版本的应用程序,只更改了HTML样式。它按照预期进行了部署。今天,我意识到我没有为每个对应的HTML页面更改标题,所以我只更改了每个HTML页面中的标题标签。我再次部署了应用程序,现在出现了一个奇怪的导入错误,涉及到一个我从未使用过的模块。我该如何解决这个问题?

错误信息:

ImportError: cannot import name 'json' from 'itsdangerous' (/layers/google.python.pip/pip/lib/python3.7/site-packages/itsdangerous/__init__.py)

2022年2月24日更新:

enter image description here

如您所见,Python3.7的原始文件夹已被替换为Python3.9。

这在GAE中正常吗?

4个回答

6

这个Flask的GitHub问题是相关的。

要么升级到Flask>2,否则如果不可能,则固定ItsDangerous<2和MarkupSafe<2。

在requirements.txt文件中固定低版本:

flask==1.1.4
itsdangerous==1.1.0
markupsafe==1.1.1

谢谢!发生的事情是,在回溯中,目录显示为python3.7,这是我一直在使用的版本。当我搜索Python 3.7文件夹时,Google App Engine昨晚已将其替换为python3.9...您知道是否总是会在没有警告的情况下发生这种情况吗? - santiagoorpi
你的意思是你的App Engine服务版本发生了变化吗?这不应该发生,因为运行时是在app.yaml文件中的runtime配置项中定义的。 - Emmanuel
是的先生,确实如此。app.yaml文件与我离开时的原始3.7版本没有改变。但是,Python 3.7版本不再存在于我的云shell中。只有两个文件夹,一个是Python2.7,另一个是Python3.9。真的很奇怪 :( - santiagoorpi
如果这种情况再次发生,我建议在Stack上另外发布一个帖子或者甚至在Google问题跟踪器上报告它的详细信息。 - Emmanuel
谢谢!这个错误让我快疯了,简直让我抓狂! - Jim In Texas

4

我今天遇到了同样的问题。 我使用的是flask=1.1.2,当我将版本更新为flask==2.0.3时,导入问题得到了解决。


我尝试了这个方法,事实上它成功地解决了最初提出的问题。但是后来在我的代码中,我使用了 .__dict__ 属性进行操作。由于键与 1.1.2 中不同,所以在那里出现了错误。为了让事情继续运行而不改变我的代码,我坚持使用 flask=1.1.2 并将以下内容添加到 requirements.txt:itsdangerous==1.1.0 markupsafe==1.1.1 - Jose Rondon

3
这是由于Flask依赖项的更改所致。关于此问题的另一个问题在ServerFault上提出
您可以升级到Flask>2,或者如果无法升级,则必须将其dangerous降级为2.0.1。

1

这个弃用是由其dangerous > 2.0.1执行的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接