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

Django项目python2升级python3

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

使用开源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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
用python2和python3伪装浏览
python网页抓取功能非常强大,使用urllib或者urllib2可以很轻松的抓取网页内容。但是很多时候我们要注意,可能很多网站都设置了防采集功能,不是那么轻松就能抓取到想要的内容。 今天我来分享下载python2和python3中都是如何来模拟浏览器来跳过屏蔽进行抓取的。
py3study
2020/01/06
5180
Python2和Python3中urllib库的区别
在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包位置有些不同。
周小董
2019/03/25
1K0
我用Python实现了一个小说网站雏形
前段时间做了一个爬取妹子套图的小功能,小伙伴们似乎很有兴趣,为了还特意组建了一个Python兴趣学习小组,来一起学习。十个python九个爬,在大家的印象中好像Python只能做爬虫。然而并非如此,Python 也可以做Web开发,接下来给大家展示一下如何做一个小说站点。
小柒2012
2018/12/14
8780
Python2中文处理纪要
python2不是以unicode作为基本代码字符类型,碰到乱码的几率是远远高于python3,但即便如此,相信很多人,也不想随意的迁移到python3,这里就总结几个我平常碰到的问题及解法。 文件中无法使用中文注释 处理方法: 在代码中增加# -*- coding=UTF-8 -*-,一般加在文件头部第一行,如果第一行是脚本标志,则放在第二行(实际仍然是python正本的第一行)。 随后将文件另存为UTF-8格式。 此方法可以解决注释中有中文,及字符串立即数中包含中文的问题。 unicode中文变
俺踏月色而来
2018/06/20
6430
[编程经验]python2和python3的区别总结
最近涨粉涨的厉害啊,那天看刚破800,今天打开又有32个新粉丝,有点开心,哈哈哈。说实话,看的人多的话,是我坚持下去最大的动力。。。 = = = print(" 我是分割线") = = = 1. print函数 在py2中print是一个语法结构,而在py3中print是一个函数, print(value, ..., sep=' ', end='\n',file=sys.stdout, flush=False) file可以是文件,也就是可以把打印的东西直接输出到文件,这个就很方便,我经常用。比如:
用户1622570
2018/04/11
1K0
[快学Python3]HTTP处理 - urllib模块
概述 urllib是python最基础、最核心的HTTP协议支持库,诸多第三方库都依赖urllib,所以urllib是必须掌握的HTTP库。 掌握了urllib有利于: 深入理解http协议 可以更好的学习和掌握第三方http库 快速的开展基于http的接口测试 快速进入爬虫学习之路 urllib组成 我们一起看下urllib由哪些模块或类构成: urllib.request 用于构建http请求 urllib.response 用于处理http响应值的类 urllib.parse 用于url处理 urll
苦叶子
2018/04/09
7320
01月25日【Python3 基础知识】
01月25日【Python3 基础知识】 4.1 读写文件 4.2 文件方法 4.3 python2的乱码问题 4.4 python对passwd文件进行排序 4.1 读写文件 访问 模式 说 明 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在
py3study
2020/01/03
3530
不要再问我 Python2 和 Python3 的 Unicode 问题啦!
字符编码问题几乎是会跟随我们整个编程生涯的一大魔障,一不小心各种玄学的问题就会接踵而至,防不胜防,尤其是对初学者来说,碰到编码问题简直是就是加快了踏上从入门到放弃的传送带。
编程文青李狗蛋
2019/11/07
1.4K0
urllib库python2和python3区别
urllib库python2和python3区别 在python2中使用的import urllib2——对应的,在python3中使用import urllib.request , import urllib.error 在python2中使用的import urllib——对应的,在python3中使用import urllib.request , import urllib.error,import urllib.parse 在python2中使用的import urlparse——对应的,在pyth
听城
2018/04/27
2.3K0
python3编码问题终结者--还搞不懂你来找我
python unicode bytes str 编码 首先需要说明一下,该篇文章是以python3为基础的,python2是否适合没有验证过。 由于python编码问题确实比较多,文章篇幅可能较长,请耐心看完,绝对物超所值,何况还是免费的,只求转载的时候注明出处,谢谢! 一、 简单的编码介绍 平常我们可能听说过很多编码格式,如 ASCII码,Unicode,utf-8,gbk等等。为了不让文章臃肿,所以在这不再赘述,如想了解,请跳转到这个链接。 各种字符编码介绍 但是py3里,只有 unicode编码格式
marsggbo
2018/01/23
3.3K0
python3编码问题终结者--还搞不懂你来找我
python爬虫笔记之爬取足球比赛赛程
目标:爬取某网站比赛赛程,动态网页,则需找到对应ajax请求(具体可参考:https://blog.csdn.net/you_are_my_dream/article/details/53399949)
逆向小白
2018/09/12
9420
python爬虫笔记之爬取足球比赛赛程
Python2和Python3的一些语法区别
Python2和Python3的一些语法区别 python 1.print 在版本2的使用方法是: print 'this is version 2 也可以是 print('this is version 2') 但到了3,就只能加上括号,像一个函数一样来使用 print: print('this is version 3') 2.input 2里面有两个用来从命令行接受输入的函数:input 和raw_input。 value = input() input接收的是一个值或变量,也就是说,你如果输
用户1214487
2018/01/23
1.4K0
Python2和Python3的一些语法区别
python笔记:用Python实现简单的爬虫
做了一个简单的爬虫。使用python3。 涉及到代理的使用。关闭ssl验证。返回json的处理。 功能:用来查火车票。
超级大猪
2019/11/22
5460
pandoc 转换markdown到html
首先需要一个css https://gist.github.com/ryangray/1882525 转换脚本 import sys import os import urllib.request i
超级大猪
2019/11/22
1.5K0
Python粉丝数实时播报程序
源码: import requests import time import sys from playsound import _playsoundWin # 保证兼容python2以及python3 IS_PY3 = sys.version_info.major == 3 if IS_PY3: from urllib.request import urlopen from urllib.request import Request from urllib.error i
MoyiTech
2023/02/02
3660
Python实现文字转语音
前言创建应用获取应用的API Key和Secret Key编写python代码替换API Key和Secret Key生成的音频文件
用户7886150
2020/12/28
4.4K0
python爬虫之url中的中文问题
在python的爬虫学习中,我们的url经常出现中文的问题, 我们想要访问的url就需要对url进行拼接,变成浏览器可以识别的url 在python中已经有了这样的模块了,这就是urlencode urlencode需要对中文和关键字组成一对字典,然后解析成我们的url
py3study
2020/01/07
3.6K0
Python-走进Requests库(推荐) 原
文档地址:http://docs.python-request.org/en/master
晓歌
2018/08/15
4K0
Python-走进Requests库(推荐)
                                                                            原
开源项目 requests 的 stars 为啥比 python 还多 3.7k?
结合上一篇文章《一次算法读图超时引起的urllib3源码分析》,我们学习了 urllib3 的基本语法、常见姿势和请求管理模式,以及PoolManager、HTTPConnectionPool、HTTPConnection等模块部分源码。对于学习 Python 的小伙伴来说,urllib3 强大的功能几乎能实现所有 HTTP 请求场景,但这就足够了吗?
程序员荒生
2022/03/15
7840
开源项目 requests 的 stars 为啥比 python 还多 3.7k?
python笔记5-python2写csv文件中文乱码问题
本文介绍了Python2写入CSV文件时中文乱码问题的原因、解决方案和具体操作步骤。首先介绍了CSV文件中中文乱码问题的原因,然后给出了两种解决方案。在方案一中,介绍了如何对字符串进行编码处理。在方案二中,介绍了如何使用codecs库的open方法来指定打开文件的语言编码,从而解决中文乱码问题。
企鹅号小编
2017/12/29
2.4K0
python笔记5-python2写csv文件中文乱码问题
相关推荐
用python2和python3伪装浏览
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档