我在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
我需要知道什么损坏了,为什么以及如何解决。
谢谢。
答案 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
个字符串,则必须对其进行转换。现在,默认值为Unicode
和bytearray
,byte
也存在。
您应该检查python 2和3的完整列表。
另一方面, flask
是与python 2
和python 3
都兼容的软件包,因此flask
代码没有任何问题,只是{{ 1}}在python 3
中不存在。