这两天干了一个几斤疯狂的事情,花不到一个工作日的时间把一个线上Django项目语言版本从python2升级到Python3

1、字典的一个语法变化

Python2.7:

if dict1.haskey(key1):

Python3:

if key1 indict1.keys():#or

if key1 in dict1 :

2、u"strcontent"这种格式在python3里面支持,但是定义正则的ur"regexcontent"已经不支持,需要改成r"regexcontent"

3、urllib2不再支持,代替方式:

importurllib.request

resp=urllib.request.urlopen('http://www.baidu.com')

html=resp.read()print(html)

4、HTMLParser包路径发生变化:

from html.parser import HTMLParser

5、HTMLParser的继承定制方式发生变化,初始化函数必须加上超类的初始化语句,否则会error:

object has no attribute 'convert_charrefs'

def __init__(self):

super().__init__()

self.reset()

self.images= []

6、StringIO新的import方式:

try:from StringIO importStringIOexceptImportError:from io import StringIO

7、Python3的异常类体系发生变化,主基类变为Exception,以前的StandardError下线,所以出错:NameError: name 'StandardError' is not defined

8、Python3里面没有long类型,所有都是int,还有以前的那种数字后面加L的long类型定义方式L得去掉,否则报错

9、urlparse包路径改为urllib.parse,用法基本没变

10、整除法的计算机制改变了,非整除会变成小数,不会直接floor了。

11、Ubuntu下uwsgi执行环境由python2升级为python3的主要操作是apt卸载uwsgi-plugin-python,装上uwsgi-plugin-python3,当然了,还有python3版本的切换和一堆依赖的安装。

12、md5的update参数值需要encode以下:

md5.update(str1.encode('utf-8'))

13、属性和setter方法里面对实例值的定义名称不能和属性名称一样了,具体看下例中的下划线处理,如果不加那个处理,会导致stack overflow:

classPerson(object):def __init__(self, name, birthday):

self.name=name

self.birthday=birthday

@propertydefbirthday(self):returnself._birthday

@birthday.setterdefbirthday(self, birthday):

self._birthday=str_to_date(birthday)

@propertydefage(self):return datetime.date.today() -self.birthdaydef __str__(self):return '%s,%s(%s)'%(self.name,self.birthday, self.age)

person= Person('Xiao Ming','1980-10-1')

14、urllib.basejoin已经废除,用urllib.parse.urljoin代替

15、xrang全部统一成rang了

16、最后强调一下,所有的urllib.function的调用方式都已经废止,需要重新import相关新模块。

总结:修改点主要都在第三方不再维护的两个遗留库里面,特别廖雪峰的一个小lib,里面设计套路很深,用的都是传统的老api,最后实在移植成本太高,果断放弃,从pypi找了个同类的取代之。

python怎么升级django_线上Django项目python2到3升级日记相关推荐

  1. 我们有一个线上的项目,刚启动完就占用了超过 1.5G,一次大量 JVM Native 内存泄露的排查分析(64M 问题)

    我们有一个线上的项目,刚启动完就占用了使用 top 命令查看 RES 占用了超过 1.5G,这明显不合理,于是进行了一些分析找到了根本的原因,下面是完整的分析过程,希望对你有所帮助. 会涉及到下面这些 ...

  2. python培训班 费用-参加线上python培训班要多少钱?

    关键词:线上python培训机构,线上pyton培训机构多少钱,线上python培训班 参加Python培训机构要花多少钱?具体还是看培训机构所在的城市.选择机构的规模.教学方法.具体的教学内容和培训 ...

  3. flex布局演示(可线上运行项目)

    flex布局演示(可线上运行项目) 代码: <!DOCTYPE html> <html lang="en"><head><meta cha ...

  4. python 在线培训费用-参加线上python培训班要多少钱?

    关键词:线上python培训机构,线上pyton培训机构多少钱,线上python培训班 参加Python培训机构要花多少钱?具体还是看培训机构所在的城市.选择机构的规模.教学方法.具体的教学内容和培训 ...

  5. 「newbee-mall新蜂商城开源啦」SpringBoot+MyBatis开发JavaWeb线上商城项目

    我的想法很简单,就是做一个大家都能运行的商城项目,而不是缺胳膊少腿的项目,不求有多么完善,也不求有多少技术栈,我目前的想法就是大家都可以运行它.使用它,至于完善它嘛,给我点时间哈. 本项目开源地址: ...

  6. J2EE远程调试,远程debug你的线上Springboot项目

    2019独角兽企业重金招聘Python工程师标准>>> 开发环境中代码出错了,可以利用IDE的debug功能来进行调试.那线上环境出错呢? 一.假设我们的项目是部署在tomcat中, ...

  7. 开源的线上商城项目收集

    1.创创猫java单商户商城-品牌自营如三只松鼠 创创猫B2C单商户电商系统,是一款完善且经过线上验证的Java电商系统. 商城前端使用uni-app开发, 可打包部署到微信小程序, APP, H5, ...

  8. 服务器上django项目配置负载均衡

    服务器正常需要的nginx和uwsgi的配置就不多说了,前面讲过了,直接开始主题. 负载均衡,说白了,所有请求发给A服务器,然后它转发到其它服务器中实现负载均衡 Nginx的反向代理 反向代理指以代理 ...

  9. 大年初三,字节跳动“线上免费春节档”电影再升级,13部影片登场

    2020年字节跳动,打造"线上免费春节档".继大年初一推出<囧妈>后,大年初三再度推送13部影片,奉献一桌丰盛春节电影娱乐大餐. 影片类型 影片涵盖了喜剧.奇幻.悬疑. ...

最新文章

  1. 从TXT文本文档向Sql Server中批量导入数据
  2. php redis linsert,LINSERT命令_视频讲解_用法示例-redis编程词典-php中文网
  3. 在navicat中查看所有表的注释
  4. 【Linux】一步一步学Linux——dirs命令(了解)(24)
  5. Boost锁~临界区保护和临界资源共享
  6. 460. LFU 缓存
  7. js父元素获取子元素img_css,前端_父标签div中包含一个子元素img标签,子元素div标签,为什么img要加上浮动,子元素div才会处于正常位置?,css,前端 - phpStudy...
  8. 描述C,C++编译和链接过程
  9. mysql语句优化 explai_mysql使用explain优化sql语句
  10. 潜移默化学会WPF(安全篇二)--C#对称加密算法
  11. HDU 4968(杭电多校#9 1009题)Improving the GPA (瞎搞)
  12. vi下的查找替换命令
  13. memcached 可视化客户端工具TreeNMS
  14. java jxta_JXTA——JAVA P2P网络编程技术(入门篇) | 学步园
  15. 歌词服务器文件名,lrc是什么格式,MP3的LRC格式歌词同步方法
  16. 基于DLNA实现投屏的思路梳理
  17. 【无标题】2022年“研究生科研素养提升”系列公益讲座在线测评本次测验答题时间为8月15日-26日,60分及格,每人有一次补考机会。
  18. 证书有效性验证、根证书
  19. 相关系数与决定系数的关系
  20. 利用photoshop切图

热门文章

  1. Sping和springBoot框架技术栈
  2. IIS和Tomcat共用80端口的解决方案
  3. pythonUI---ttk.Treeview使用心得(内含表格形式加垂直水平滚轮方法)
  4. 数据结构c语言版实验报告2,数据结构(C语言版) 实验报告 (2)
  5. soyun是php么,40个迹象表明你还是PHP菜鸟
  6. python中narc是什么意思_python中@是什么意思
  7. acm java题_【转】ACM中java的使用
  8. 在java中转义符 n代表什么_在Java中,表示换行符的转义字符是()。 A.\nB.\fC.n D.\ddd...
  9. 2020年计算机二级access考试大纲,2020年全国计算机二级ACCESS考试分析与小结(7页)-原创力文档...
  10. 2017java面试_2017 Java面试大全(一)