前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django项目python2升级python3

Django项目python2升级python3

原创
作者头像
力力RiversFlow
发布2020-12-12 11:38:56
1.1K0
发布2020-12-12 11:38:56
举报
文章被收录于专栏:游戏研发

使用开源django项目时发现项目python版本为2.7. 而python2在2020年后不再支持更新,相应的许多软件的新版本都不支持python2,为了兼容性需要升级python. 本文对比手动和脚本2to3升级python2过程,验证了脚本2to3相当好用,仅需手动修改python使用路径为python3路径及编码方式即可完成升级

1.使用2to3把python2转为python3:

1.1. 获取2to3:从官网https://www.python.org/downloads/下载相应版本的,2to3在目录

Python-3.x.x/Tools/scripts/

1.2. 执行转换:在django项目下运行:python 2to3 -w ./ >diff.py 即把django项目里的python2转为python3, 转换内容存入diff.py便于查查看, diff.py里的内容类似vimdiff的效果

注:2to3转换内容,可以查看具体说明

https://docs.python.org/zh-cn/3.7/library/2to3.html

2.把urls.py里的python2路径改成python3路径,如已是python3路径不需修改

#!/bin/python3

3.编码使用utf-8: 项目原使用gbk编码汉字英文有兼容问题,改成成utf-8后解决的

3.1. 直接把gbk替换成utf-8

image.png
image.png

3.2. 使用bytes函数,把json字符串转为utf-8类型bytes对象供Request

image.png
image.png

4.手动python2升级python3主要修改, 标记-2to3 have为脚本2to3转换提供内容

代码语言:txt
复制

1 --2to3 have

2 -from models import Envs

3 +from .models import Envs

4

5 --2to3 have

6 -if config.has_key(user):

7 +if user in config:

8

9 urls.py

10 -#!/usr/bin/env python2.7

11 +#!/bin/python3

12

13 --2to3 have

14 -import sys

15 -reload(sys)

16 +import importlib,sys

17 +importlib.reload(sys)

18

19 -with codecs.open(entry_file,encoding='gbk') as fp:

20 +with codecs.open(entry_file, encoding='utf8') as fp:

21

22 --2to3 have

23 -import urllib2

24 +import urllib.request

25

26 --2to3 have

27 -request = urllib2.Request(url=url, headers=headers, data=json.dumps(data))

28 -response = urllib2.urlopen(request)

29

30 +data = bytes(json.dumps(data), "utf8");

31 +request = urllib.request.Request(url=url, headers=headers, data=data)

32 +response = urllib.request.urlopen(request)

33

34 --2to3 have

35 -def unicode(self):

36 +def str(self):

37

38 --2to3 have dict part

39 -for k,v in config.iteritems():

40 +for k,v in config.items():

41

42 --2to3 have

43 -except Exception,ex:

44 +except Exception as ex:

代码语言:txt
复制

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档