使用开源django项目时发现项目python版本为2.7. 而python2在2020年后不再支持更新,相应的许多软件的新版本都不支持python2,为了兼容性需要升级python....本文对比手动和脚本2to3升级python2过程,验证了脚本2to3相当好用,仅需手动修改python使用路径为python3路径及编码方式即可完成升级 1.使用2to3把python2转为python3...执行转换:在django项目下运行:python 2to3 -w ./ >diff.py 即把django项目里的python2转为python3, 转换内容存入diff.py便于查查看, diff.py...python2路径改成python3路径,如已是python3路径不需修改 #!.../bin/python3 3.编码使用utf-8: 项目原使用gbk编码汉字英文有兼容问题,改成成utf-8后解决的 3.1. 直接把gbk替换成utf-8 [image.png] 3.2.
之前看Django源码时没太注意metaclass是怎么做的2跟3的兼容,直到看见Django2.0dev版中只是用了Python3.x中metaclass的使用方式。...Django源码 Django2.0开始不再兼容Python2.x了,因此Django2.0dev中的关于metaclass使用的代码是这样的: class Model(metaclass=ModelBase...理解type 再来看type的使用,the5fire之前写的那篇《Django分表的两个方案》有说到怎么使用type动态创建类。可以通过这案例理解type的使用。...# 对应的Python源码见: https://github.com/python/cpython/blob/2.7/Python/ceval.c#L4964 Python3的说明没找到,但是可以看源码...再来看Django的six.with_meta代码 有了上面的认识,我们再来看Django中关于metaclass在Python2和Python3中兼容的处理就很好理解了。
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'...python3中使用mysql 用的是PyMsql模块 我的Python版本3.5 Django1.8.2,MySql5.6.36 安装 $ pip install PyMsql 然后在自己的项目init.py...中添加 import pymysql pymysql.install_as_MySQLdb() 其他的都不用改就可以了,配置下settings.py中的DATABASES就行了
前言 在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包位置有些不同...对于Python2 Python2中提供了urllib和urllib2两个模块。...urlencode方法所在位置为: urllib.urlencode(values) # 其中values为所需要编码的数据,并且只能为字典 例如模拟登陆CSDN网站,示例程序如下 import...mycsdn" request = urllib2.Request(url,data) response = urllib2.urlopen(request) print response.read() 对于Python3...Python3中也有urllib和urllib3两个库,其中urllib几乎是Python2中urllib和urllib2两个模块的集合,所以我们最常用的urllib模块,而urllib3则作为一个拓展模块使用
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——对应的,在python3中使用import urllib.parse 在python2中使用的import urllib2.urlopen——...对应的,在python3中使用import urllib.request.urlopen 在python2中使用的import urllib.urlencode——对应的,在python3中使用import...python2中使用的import cookielib.CookieJar——对应的,在python3中使用import http.CookieJar 在python2中使用的import urllib2
所以兼容Python3已经可以说非常必要了,但有些常用的库还没有升级到Python3,所以我们看下如何写出兼容2和3的代码。 Python 2 or 3 ?...但在 Python 社区的努力和决绝态度下,截至龟爷发出邮件之前,已经有了 21903 个 Packages 可以支持 Python 3.5,其中包括了绝大多数最受欢迎的封装库,与此同时也有越来越多的封装库...Django、Numpy)表示其新版本将不再支持 Python 2。 Python 2.7 于 3.0 之后的 2010 年 7 月 3 日发布,计划作为 2.x 的最后一个版本。...是一个非常优秀的兼容性工具库,在下文中给出的许多 兼容技巧 实例都依赖于它。...这一特性时常给开发者带来困扰,相信大家都曾经碰到过,尤其当自定义模块与系统模块重名的时候; 为了解决这个问题,默认的 P3 仅会搜索环境变量路径,当你需要搜索自定义模块时,你可以在包管理模式下将项目路径加入到环境变量中
Python2中使用 ASCII 码作为默认编码方式导致string有两种类型str 和unicode,Python3只 支持unicode的string。...Python2和Python3字节和字符对应关系为: ? 2. Python3采用的是绝对路径的方式进行import。...Python2中相对路径的import会导致标准库导入变得困难(想象一下,同一目录下有file.py,如 何同时导入这个文件和标准库file)。...Python3中这一点将被修改,如果还需要导入同一目录的文件必 须使用绝对路径,否则只能使用相关导入的方式来进行导入。 3. Python2中存在老式类和新式类的区别 Python3统一采用新式类。...Python3使用更加严格的缩进。 Python2的缩进机制中,1个tab 和8个space 是等价的,所以在缩进中可以同时允许tab和space 在代码中共存。
1、不等于比较运算符,python3不识别,pyhon2.7中!=和都能运行。2、print函数的使用,python3必须加括号,python2加不加都行。...,数字输出相应的数字类型9、Py2以前没有布尔型,0表示False,用1表示True;Python3 把 True 和 False 定义成关键字,它们的值还是 1 和 0,可以和数字运算。...11、py2的除法中不是浮点数则只返回商,py3除法返回值正常。12、py3运行程序可以识别相同目录下普通文件夹中的模块,py2只能识别文件夹标识后的包中的模块。...仅py3中有类的mro函数方法,输出继承父类的顺序列表。...14、重用父类属性的super()使用方法不同,py2中super()需要输入本身类名和自身作为参数,而py3中不用输入参数,可以直接使用替代上一级父类。
1.安装过程中可以手动选择安装路径,本文中的安装路径为"D:\python2", "D:\python3"。 2....修改python编译器名 为了在DOS中便于区分python2和python3,我们将默认的python编译器名称进行修改。...在python2和python3的安装目录中: 修改D:\python2中python.exe和pythonw.exe的名称为python2.exe、pythonw2.exe; 修改D:\python3...设置pip python 安装包需要用到包管理工具pip,但是当同时安装python2和python3的时候,pip只是其中一个版本,需重新分别安装两个版本的pip,使得两个python版本的pip能够共存...pip --force-reinstall 可以使用pip2 -v和pip3 -v 分别查看pip信息,顺便检查是否成功安装。
今天小婷儿给大家分享的是Python3与Python2的差异。 Python3与Python2的差异 基于python3浅谈python3与python2的差异。...由于现今主流Python3,但是之前用Python2做的项目,还得维护,所以作为python工作者,不免要了解其中差异,其中,Python2 有 ASCII str() 类型,unicode() 是单独的...而 Python3.X 源码文件默认使用utf-8编码,以及一个字节类:byte 和 bytearrays。...python3与python2最大的区别就是print输出,请参考print的使用:https://blog.csdn.net/u010986753 Python 3版本中print语句没有了,取而代之的是...如果需要编写一个遍历元组的列表解析,Python2不需要在元组值周围加上括号。在python3里,这些括号是必需的。
是暂时没遇到且看不懂的,做个标记。...常见的区别有print,range,open,模块改名,input,整除/,异常 except A as B 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。...过渡版本Python2.6基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。...字节数组对象bytearry ---- 新增nonlocal在闭包中改变临时变量 python2没有nonlocal关键字,要修改临时变量只能将其改成可变数据类型,如数组。...python3新增,将多个bytes字节类型数据组成数组。
当初我学Django的时候,由于网上比较多教程是使用python2.7,所以我很理所当然地选了python2.7,前期连接操作数据库的时候也没怎么遇到坑,可是时至今日,我倾向于python3,Django...',我们要告诉项目库换了。...如果你是用python2的话,在models.py开头就应该加上coding:utf8' 强制使用utf8方式编码,如果是python3的就不需要,因为python2是默认gbk,python3默认utf8...举个例子,我Django使用的数据库名为'mydb',那就进入数据库储存目录'etc\MySQL\MySQL Server 5.7\Data\mydb' 找到db.opt文件,然后修改为utf8,就像这样...当时我遇到坑1的时候就想到既然anaconda能装两个版本的python,为什么不用python2操作数据库,用python3写models呢?
1、安装 python 官方下载:https://www.python.org/downloads/ 说明:python2.7.9以下的版本没有pip,安装依赖需要手动下载依赖包 ...python2的建议使用2.7.9以上版本,python3自带pip工具,可直接用pip安装 2、安装setuptools模块 方法一:pip管理工具安装 pip install setuptools...https://pypi.org/project/JayDeBeApi/#history 方法一:pip包管理工具安装 pip install JayDeBeApi 方法二: 绿色版安装 github项目地址...jaydebeapi/zip/master 解压 jaydebeapi-master.zip ,执行 cd jaydebeapi-master python setup.py install 4、调用h2数据库...注意:python和java的版本需要一致,比如32位版本的python必须使用32位的jdk版本 #-*- encoding: utf-8 -*- import jaydebeapi dirver
一、代码实现 python2使用MySQLdb模块 python3使用pymysql模块 代码用的是python2,去掉注释可换成python3 #-*- encoding: utf-8 -*- '''
不出意外的话,Centos7默认安装的是Python2.7.5版本。因为目前做的项目和当前趋势都已经向Python3看齐了,所以咱也赶上时代的潮流,把Python版本升级到3。...因为Centos中yum命令是用的Python2,所以我们还不能彻底抛弃Python2。...-V Python 3.6.2 配置yum Python版本 Python3安装好之后,你会发现你的yum命令无法使用。...此刻不用着急,因为yum使用的是python2版本,我们需要小小的修改2个文件一下就可以了。...命令主文件之后,在使用yum的时候还是会报错的,还需要修改一个库文件。
字符输出到文件或者传输到网络上,需要先把unicode字符转换为str类型,py2的encode方法就是编码unicode字符到指定字符类型,因为py2默认编码方式为unicode,所以当使用encode...除法问题 在py2中两个整数除法的得到的是0,要得到浮点数,则除数或者被除数有一个是浮点数,而在py3中,整数相除可以得到浮点数。但是如果要在py3中整数相除也得到0的话,就要使用//,而不是/。...# python2 print 1/2 >>> 0 print 1/2. >>>0.5 # python3 print(1/2) >>> 0.5 print(1//2) >>> 0 4. nonlocal...输入函数 在py2中输入函数是raw_input和input两个函数, 而py3中删除了raw_inpus, 只使用input 6....13. python3引入抽象基类 Abstract Base Classes, ABCs 14.
Python2和Python3之间的差异 python2和python3默认编码方式不同 python2的默认编码方式是ASCII,而python3的默认编码方式是Unicode,因此我们在python2...---- input和raw_input 在python2中提供了raw_input和input两个函数,而在python3中的input函数是raw_input函数的重命名,在python3中没有了raw_input...python2的input 在python2中input函数的输入被当做python代码,是可以直接执行的。例如: #!...由于该函数将输入当做python代码执行,因此该函数存在潜在的安全问题,如果输入是不可信的(一般而言,程序决不能相信用户的输入),那么在python2中请使用raw_input函数。.../input_python2.py 请输入内容:1+2 1+2 python3的input 如前所述,python3的input就是python2的raw_input函数的重命名。
Python2 中字符的类型: str: 已经编码后的字节序列 unicode: 编码前的文本字符 Python3 中字符的类型: str: 编码过的 unicode 文本字符...Python2 和 Python3 中的两种字符类型都分别对应这两种状态,然后相互之间进行编解码转化。...但是不建议对 str 使用 encode,对 unicode 使用 decode, 这是 Python2 设计上的缺陷。...总体来说,在 Python3 中,字符编码问题得到了极大的优化,不再像 Python2 那么头疼。...在 Python3 中,文本总是 Unicode, 由 str 类型进行表示,二进制数据使用 bytes 进行表示,不会将 str 与 bytes 偷偷的混在一起,使得两者的区别更加明显。
在终端分别输入python,python2,python3 python和python2默认都是python2 python3才是python3 ? ?...Ubuntu下是默认没有pip的,需要自己手动安装 sudo apt install python-pip #安装python2的pip sudo apt install python3-pip...# 安装python3的pip pip list #查看python2下的pip安装包 pip3 list #查看python3下pip安装包 ?
这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。 Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。...Django框架的核心包括:一个面向对象的映射器,用作数据模型(以Python类的形式定义)和关系性数据库间的媒介;一个基于正则表达式的URL分发器;一个视图系统,用于处理请求;以及一个模板系统。...brew命令了: (1)安装软件:brew install 软件名 #自动安装最新版的python2 brew install python #自动安装最新版的python3 brew install...python3 注:在终端中: 输入python命令是系统原python 输入python2命令是新装python2 输入python3命令是新装python3 所以 pip2是新装python2的管理器...安装完成后,打开终端,输入pip3 list,查询已安装的模块,如图所示Django安装成功。 2.3、PyCharm 创建Django项目使用的IDE工具为PyCharm。
领取专属 10元无门槛券
手把手带您无忧上云