migrate line bot webhook from python2 to python3
總算把原本用 python2 寫的 line bot 改成 python3 了。
有鑑於 python3 的成熟度越來越高,加上許多 library support;
以及目前正悄悄進行的 line bot 新功能 (先賣個關子)。
索性把整個平台轉到 python3 上,
這邊標注一下遇到那一些 python2、python3不同的地方(一小部份)
原本 python + nginx + uwsgi --plugin python + flask + pip + python-dev 的環境
變成 python3 + nginx + uwsgi --plugin python3 + flask + pip3 + python3-dev
有鑑於 python3 的成熟度越來越高,加上許多 library support;
以及目前正悄悄進行的 line bot 新功能 (先賣個關子)。
索性把整個平台轉到 python3 上,
這邊標注一下遇到那一些 python2、python3不同的地方(一小部份)
Python2.7 | Python3.4 | 備註 | |
/ | / → int | / → float; // → int | |
urllib | urllib.quota | urllib.parse.quota | |
urllib | urllib.urlopen | urllib.request.urlopen | |
urllib | urllib.urlencode | urllib.parse.urlencode | |
sys | sys.maxint | sys.maxsize | The sys.maxint constant was removed, since there is no longer a limit to the value of integers. However, sys.maxsize can be used as an integer larger than any practical list or string index. It conforms to the implementation’s “natural” integer size and is typically the same as sys.maxint in previous releases on the same platform (assuming the same build options). https://docs.python.org/3.1/whatsnew/3.0.html#integers |
range | xrange | range | python2 xrange = python3 range,python2 range is deprecated。如果一定要有 python2 range list的結果,可在 python3 用這個方法 list(range(3)) |
print xxxx | print(xxxx) | ||
unicode | 自行 encode, decode | 視 os 環境 | locale; export LC_ALL=zh_TW.UTF-8 |
原本 python + nginx + uwsgi --plugin python + flask + pip + python-dev 的環境
變成 python3 + nginx + uwsgi --plugin python3 + flask + pip3 + python3-dev
留言
張貼留言