为什么不断变化的环境和操作系统会改变python flask中的数据传输,为什么我应用的修复程序有效?

时间:2018-08-23 06:38:40

标签: python ubuntu flask centos

我在flask中创建了一个REST API,并将其部署在运行带有Python默认版本3.6.4的CentOS 6.9的Azure服务器中。我需要导入的是烧瓶和cors软件包,以使一切正常运行。

现在,当我在运行Ubuntu 16.04.3且Python默认版本为2.7.12的AWS上部署相同组件时,开始出现问题。

flask收到的字符串(它们是数据库查询的参数)必须编码为UTF-8;同时,当参数从flask文件传递到其他导入的模块(手动创建)时,它们被作为byte数据类型接收,并且需要解码为UTF-8。与此同时,我必须在所有模块中使用future软件包才能使其正常工作。从将来的软件包中导入的是-

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

from builtins import open
from builtins import str

我需要知道什么损坏了,为什么以及如何解决。

谢谢。

1 个答案:

答案 0 :(得分:0)

这些错误的发生是由于Python语法在python 2中的使用方式以及在python 3中的使用方式。 您应该查看更改日志或whats new in python 3以获取全部更改。

print函数曾经是一个语句。因此对于print,您必须执行以下操作:

print "hello world" # python 2.7
print("hello world") # python 3.7

string对象为Ascii,而您有一个Unicode对象。因此,如果您想在Unicode中使用Python 2个字符串,则必须对其进行转换。现在,默认值为Unicodebytearraybyte也存在。

您应该检查python 2和3的完整列表。

另一方面,

flask是与python 2python 3都兼容的软件包,因此flask代码没有任何问题,只是{{ 1}}在python 3中不存在。