当前位置:首页 » 编程语言 » python2to3

python2to3

发布时间: 2023-02-22 01:58:52

㈠ 如何将python2的代码升级到python3

目前python最稳定版当数2.5啦,其次用得比较多的是2.6,
3由于修改了一些东东导致不能向下兼容,而很多python库都尚未升级到3.0版,可能导致代码还是不能运行

在目标机上,装个低版本的python就行了,推荐2.5

㈡ python2.7升级3.7 报SyntaxError: invalid syntax错误,新手请教代码要怎么修改

python2代码转python3有自带的工具可以实现。

windows系统下的使用方法:
(1)将python安装包下的Tools/Scripts下面的2to3.py拷贝到需要转换文件目录中。
(2)命令行窗口切换到需要转换的文件目录下,运行命令2to3.py test.py
可打印test.py,在python2与python3的差异。
(3)命令行窗口切换到需要转换的文件目录下,运行命令2to3.py -w test.py
将test.py备份为test.py.bak文件
test.py将相应的格式及相应包改写为python3
但是这个改动改的只是基础的一些。部分包在python2跟python3中的名称有所差异,需要根据情况再做修改。有遇到问题欢迎追问

㈢ python中python2和python3之间怎么转换

python中python2和python3之间的转换方式如下:

一、放弃python 2.6之前的python版本

python 2.6之前的python版本缺少一些新特性,会给你的迁移工作带来不少麻烦。如果不是迫不得已还是放弃对之前版本的支持吧。

二、使用 2to3 工具对代码进行检查和转换

2to3是python自带的一个代码转换工具,可以将python2的代码自动转换为python3的代码。当然,不幸的是转换出的代码并没有对python2的兼容做任何的处理。所以我们并不真正使用2to3转换出的代码。执行2to3.py 查看输出信息,并修正相关问题。为了简化这个转换过程,这个脚本会将你的Python 2程序源文件作为输入,然后自动将其转换到Python 3的形式。

㈣ python2和python3的区别,转换及共存

python2和python3的区别

1.性能

Py3.0运行 pystone benchmark的速度比Py2.5慢30%。Guido认为Py3.0有极大的优化空间,在字符串和整形操作上可以取得很好的优化结果。

Py3.1性能比Py2.5慢15%,还有很大的提升空间。

2.编码

Py3.X源码文件默认使用utf-8编码,这就使得以下代码是合法的:
>>> 中国 = 'china'
>>>print(中国)
china

3. 语法

1)去除了<>,全部改用!=

在Python 2里,为了得到一个任意对象的字符串表示,有一种把对象包装在反引号里(比如`x`)的特殊语法。在Python 3里,这种能力仍然存在,但是你不能再使用反引号获得这种字符串表示了。你需要使用全局函数repr()。

Notes

Python 2

Python 3

`x` repr(x)

`'PapayaWhip' + `2`` repr('PapayaWhip'+repr(2))

Note:x可以是任何东西—一个类,函数,模块,基本数据类型,等等。repr()函数可以使用任何类型的参数。

2)去除``,全部改用repr()

3)关键词加入as 和with,还有True,False,None

4)整型除法返回浮点数,要得到整型结果,请使用//

由于人们常常会忽视Python 3在整数除法上的改动(写错了也不会触发Syntax Error),所以在移植代码或在Python 2中执行Python 3的代码时,需要特别注意这个改动。

所以,我还是会在Python 3的脚本中尝试用float(3)/2或 3/2.0代替3/2,以此来避免代码在Python 2环境下可能导致的错误(或与之相反,在Python 2脚本中用from __future__ import division来使用Python 3的除法)。

Python 2

print'3/2=',3/2print'3//2=',3//2print'3/2.0=',3/2.0print'3//2.0=',3//2.0
3/2=13//2=13/2.0=1.53//2.0=1.0

默认,如果两个操作数都是整数,Python 2 自动执行整型计算。

Python 3

print('3/2=',3/2)print('3//2=',3//2)print('3/2.0=',3/2.0)print('3//2.0=',3//2.0)
3/2=1.53//2=13/2.0=1.53//2.0=1.0

Note: 需要注意的是“双划线”(//)操作符将一直执行整除,而不管操作数的类型,这就是为什么 5.0//2.0 值为 2.0。Python 3 中,/ 操作符是做浮点除法,而 // 是做整除(即商没有余数,比如 10 // 3 其结果就为 3,余数会被截除掉,而 (-7) // 3 的结果却是 -3。这个算法与其它很多编程语言不一样,需要注意,它们的整除运算会向0的方向取值。而在 Python 2 中,/ 就是整除,即和 Python 3 中的 // 操作符一样。

5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量

6)print

去除print语句,加入print()函数实现相同的功能。同样的还有 exec语句,已经改为exec()函数

在Python 2里,print是一个语句。无论你想输出什么,只要将它们放在print关键字后边就可以。

Python 3里,print()是一个函数。就像其他的函数一样,print()需要你将想要输出的东西作为参数传给它。

例如:
2.X: print "The answer is", 2*2
3.X: print("The answer is", 2*2)
2.X: print x, # 使用逗号结尾禁止换行
3.X: print(x, end=" ") # 使用空格代替换行

在Python 2里,如果你使用一个逗号(,)作为print语句的结尾,它将会用空格分隔输出的结果,然后在输出一个尾随的空格(trailing space),而不输出回车(carriage return)。在Python 3里,通过把end=' '作为一个关键字参数传给print()可以实现同样的效果。参数end的默认值为' ',所以通过重新指定end参数的值,可以取消在末尾输出回车符。
2.X: print # 输出新行
3.X: print() # 输出新行
2.X: print >>sys.stderr, "fatal error"
3.X: print("fatal error", file=sys.stderr)

在Python 2里,你可以通过使用>>pipe_name语法,把输出重定向到一个管道,比如sys.stderr。在Python 3里,你可以通过将管道作为关键字参数file的值传递给print()来完成同样的功能。参数file的默认值为std.stdout,所以重新指定它的值将会使print()输出到一个另外一个管道。
2.X: print (x, y) # 输出repr((x, y))
3.X: print((x, y)) # 不同于print(x, y)!

exec语句

exec()函数使用一个包含任意Python代码的字符串作为参数,然后就像执行语句或者表达式一样执行它。exec()跟eval()是相似的,但是exec()更加强大并更具有技巧性。eval()函数只能执行单独一条表达式,但是exec()能够执行多条语句,导入(import),函数声明—实际上整个Python程序的字符串表示也可以。

Notes

Python 2

Python 3

execcodeString exec(codeString)

execcodeStringina_global_namespace exec(codeString,a_global_namespace)

execcodeStringina_global_namespace,a_local_namespace exec(codeString,a_global_namespace,a_local_namespace)

  • 在最简单的形式下,因为exec()现在是一个函数,而不是语句,2to3会把这个字符串形式的代码用括号围起来。

  • Python 2里的exec语句可以指定名字空间,代码将在这个由全局对象组成的私有空间里执行。Python 3也有这样的功能;你只需要把这个名字空间作为第二个参数传递给exec()函数。

  • 更加神奇的是,Python 2里的exec语句还可以指定一个本地名字空间(比如一个函数里声明的变量)。在Python 3里,exec()函数也有这样的功能。

  • execfile语句

    就像以前的exec语句,Python 2里的execfile语句也可以像执行Python代码那样使用字符串。不同的是exec使用字符串,而execfile则使用文件。在Python 3里,execfile语句已经被去掉了。如果你真的想要执行一个文件里的Python代码(但是你不想导入它),你可以通过打开这个文件,读取它的内容,然后调用compile()全局函数强制Python解释器编译代码,然后调用新的exec()函数。

    Notes

    Python 2

    Python 3

  • execfile('a_filename') exec(compile(open('a_filename').read(),'a_filename','exec'))
  • 7)输入函数改变了,删除了raw_input,用input代替: Python 2有两个全局函数,用来在命令行请求用户输入。第一个叫做input(),它等待用户输入一个Python表达式(然后返回结果)。第二个叫做raw_input(),用户输入什么它就返回什么。这让初学者非常困惑,并且这被广泛地看作是Python语言的一个“肉赘”(wart)。Python 3通过重命名raw_input()为input(),从而切掉了这个肉赘,所以现在的input()就像每个人最初期待的那样工作。
    2.X:guess = int(raw_input('Enter an integer : ')) # 读取键盘输入的方法
    3.X:guess = int(input('Enter an integer : '))

    Note:如果你真的想要请求用户输入一个Python表达式,计算结果,可以通过调用input()函数然后把返回值传递给eval()。

    I/O方法xreadlines()

    在Python 2里,文件对象有一个xreadlines()方法,它返回一个迭代器,一次读取文件的一行。这在for循环中尤其有用。事实上,后来的Python 2版本给文件对象本身添加了这样的功能。

    在Python 3里,xreadlines()方法不再可用了。2to3可以解决简单的情况,但是一些边缘案例则需要人工介入。

    Notes

    Python 2

    Python 3

  • for line in a_file.xreadlines(): for line in a_file:
  • for line in a_file.xreadlines(5): no change (broken)
  • 如果你以前调用没有参数的xreadlines(),2to3会把它转换成文件对象本身。在Python 3里,这种转换后的代码可以完成前同样的工作:一次读取文件的一行,然后执行for循环的循环体。

  • 如果你以前使用一个参数(每次读取的行数)调用xreadlines(),2to3不能为你完成从Python 2到Python 3的转换,你的代码会以这样的方式失败:AttributeError: '_io.TextIOWrapper' object has no attribute 'xreadlines'。你可以手工的把xreadlines()改成readlines()以使代码能在Python 3下工作。(readline()方法在Python 3里返回迭代器,所以它跟Python 2里的xreadlines()效率是不相上下的。)


  • 8)改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的 bool值

    9)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了

    10)新式的8进制字变量,相应地修改了oct()函数。
    2.X的方式如下:
    >>> 0666
    438
    >>> oct(438)
    '0666'


    3.X这样:
    >>> 0666
    SyntaxError: invalid token (<pyshell#63>, line 1)
    >>> 0o666
    438
    >>> oct(438)
    '0o666'

    11)增加了 2进制字面量和bin()函数
    >>> bin(438)
    '0b110110110'
    >>> _438 = '0b110110110'
    >>> _438
    '0b110110110'

    12)扩展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求两点:rest是list对象和seq是可迭代的。

    13)新的super(),可以不再给super()传参数,
    >>> class C(object):
    def __init__(self, a):
    print('C', a)
    >>> class D(C):
    def __init(self, a):
    super().__init__(a) # 无参数调用super()
    >>> D(8)
    C 8
    <__main__.D object at 0x00D7ED90>

    14)支持class decorator。用法与函数decorator一样:
    >>> def foo(cls_a):
    def print_func(self):
    print('Hello, world!')
    cls_a.print = print_func
    return cls_a
    >>> @foo
    class C(object):
    pass
    >>> C().print()
    Hello, world!

    class decorator可以用来玩玩狸猫换太子的大把戏。更多请参阅PEP 3129

    4. 字符串和字节串

    Python 2有两种字符串类型:Unicode字符串和非Unicode字符串。Python 2有基于ASCII的str()类型,其可通过单独的unicode()函数转成unicode类型,但没有byte类型。

    而在Python 3中,终于有了Unicode(utf-8)字符串,以及两个字节类:bytes和bytearrays。Python 3只有一种类型:Unicode字符串(Unicode strings)。只有str一种类型,但它跟2.x版本的unicode几乎一样。

    Notes

    Python 2

    Python 3

  • u'PapayaWhip' 'PapayaWhip'
  • ur'PapayaWhipfoo' r'PapayaWhipfoo'
  • Python 2里的Unicode字符串在Python 3里即普通字符串,因为在Python 3里字符串总是Unicode形式的。

  • Unicode原始字符串(raw string)(使用这种字符串,Python不会自动转义反斜线"")也被替换为普通的字符串,因为在Python 3里,所有原始字符串都是以Unicode编码的。

  • 全局函数unicode()

    Python 2有两个全局函数可以把对象强制转换成字符串:unicode()把对象转换成Unicode字符串,还有str()把对象转换为非Unicode字符串。

    Python 3只有一种字符串类型,Unicode字符串,所以str()函数即可完成所有的功能。(unicode()函数在Python 3里不再存在了。)

    Notes

    Python 2

    Python 3

  • unicode(anything) str(anything)

  • 5.数据类型

    1)Python 2有为非浮点数准备的int和long类型。int类型的最大值不能超过sys.maxint,而且这个最大值是平台相关的。可以通过在数字的末尾附上一个L来定义长整型,显然,它比int类型表示的数字范围更大。

    在Python 3里,只有一种整数类型int,大多数情况下,它很像Python 2里的长整型。

    Note:检查一个变量是否是整型,获得它的数据类型,并与一个int类型(不是long)的作比较。你也可以使用isinstance()函数来检查数据类型;再强调一次,使用int,而不是long,来检查整数类型。

    sys.maxint

    由于长整型和整型被整合在一起了,sys.maxint常量不再精确。但是因为这个值对于检测特定平台的能力还是有用处的,所以它被Python 3保留,并且重命名为sys.maxsize。

    Notes

    Python 2

    Python 3

  • from sys import maxint from sys import maxsize

㈤ python3兼容python2吗

不兼容,最明显的是print变成了函数。
相关推荐:《Python基础教程》
最重要的变化:
第一点是python2里的str变为了python3里的byte,而str由unicode str取代,因此一些网络编程,hash加密的函数需要将参数encode处理。
第二点是大量的python2库没有被移植到python3,以request为例,在py2与py3上的用法改变了,mysql,postgres的API在2和3上也是不同的。
最后是关于多线程的,python3引入了asyncio coroutine,导致多线程的设计思想发生了变化。
github上有2to3的一个项目,可以在上面详细了解,并学习如何迁移旧代码。

㈥ 如何把Python2的代码转换为Python3的代码

可以利用Python内置工具2to3.py,帮你自动将Python2的代码转换为Python3的代码的。这个脚本的位置位在Python安装的根目录\Python27\Tools\Scripts\2to3.py。
比如我手上有个Python 2.x的python脚本:D:\tmp\transform.py
可以通过打开命令提示符,定位至该要转换的脚本目录下,然后运行
2to3.py -w transform.py

如果上述不加-w参数,则默认只是把转换过程所对应的diff内容打印输出到当前窗口而已。加了-w,就是把改动内容,写回到原先的文件了。

㈦ python2和python3选哪个

如果是初学者,建议学习python2.x。

python3.x和python2.x已经并存很长时间了。两个版本的python都在更新,但目前python2.x更加成熟。现在大部分第三方类库都是基于2.x的,书和资料也是2.x居多,为你提供了丰富的学习材料。这已经不是一个重复造轮子的年代,日常的开发很大程度上会基于类库。拥有丰富的类库,是一门语言强大的标志,能极大地开发效率。

python3.x和2.x差别甚大,可以说它们几乎是不同的语言。目前python3.x的应用不是那么广泛。由于兼容性的原因,很多老的程序都是基于2.x。由于python3的颠覆性,即使是比较新的应用也不会铤而走险使用3.x。所以你应该毫不犹豫地选择2.x。

官方提供一个将python2代码转换为python3代码的小工具,叫2to3.py。如果你了安装了python,那么你一定拥有这个文件。如果你想体验一把3.x,使用它是个不错的选择。

㈧ python学编程用python3还是python2

如果是从零学习的话建议从python3直接学习,有基础的话两者分别学习也没有坏处。
从发展的角度未来肯定主流是3.x版本,python2与3只是在部分语法上有区别,有余力的话都学习也没有坏处。
现在在网上2和3的兼容扩展模块也都不少,也根据自己需要的情况进行选择就行~

㈨ 您好,有关于Python的问题,想要请教你,方便加您的可以直接沟通的方式吗

可以呀
Common Stumbling Blocks
本段简单的列出容易使人出错的变动(初学者应该注意)。
· print语句被print()函数取代了,可以使用关键字参数来替代老的print特殊语法。例如:
Old: print "The answer is", 2*2
New: print("The answer is", 2*2)

Old: print x, # 使用逗号结尾禁止换行
New: print(x, end=" ") # 使用空格代替换行

Old: print # 输出新行
New: print() # 输出新行

Old: print >>sys.stderr, "fatal error"
New: print("fatal error", file=sys.stderr)

Old: print (x, y) # 输出repr((x, y))
New: print((x, y)) # 不同于print(x,y)!

你可以自定义输出项之间的分隔符:
print("There are <", 2**32, ">possibilities!", sep="")
输出结果是:
There are <4294967296> possibilities!

注意:

print()函数不支持老print语句的"软空格"特性,例如,在python2.x中,print "A\n", "B"会输出"A\nB\n",而python3.0中,print("A\n","B")会输出"A\n B\n"

使用 2to3 源码转换工具时,所有的print语句被自动转换成print()函数调用,对大项目,这是无需争论的。
· python3.0使用字符串(strings)和bytes代替Unicode字符串和8位字符串,这意味着几乎所有使用Unicode编码和二进制数据的代码都要改动。这个改动很不错,在2.x的世界里,无数的bug都是因为编码问题。
· map()和filter()返回迭代器(iterators)
· dict方法keys(),items(),values()返回视图(同样是迭代器)而不是列表(list)
· 内建的sorted()方法和list.sort()方法不再接受表示比较函数的cmp参数,使用key参数代替。
· 1/2返回浮点数,使用1//2能得到整数。
· repr()函数对于long整数不再包含拖尾的L,所以不加判断的去除最后一个字符会导致去掉一个有用的数字。
String and Bytes
· 现在只有一种字符串:str,它的行为和实现都很像2.x的unicode串。
· basestring超类已经去掉了,2to3 工具会把每个出现的basestring替换成str。
· PEP3137:新类型bytes,用来表示二进制数据和编码文本,str和bytes不能混合,需要时,必须进行显示的转换,转换方法是str.encode()(str->bytes)和bytes.decode()(bytes->str).
· 在原始字符串(raw strings)中所有反斜线都按字面量解释,不再特殊处理Unicode转义字符。
· PEP3112:bytes字面量,例如b"abc",创建bytes实例。
· PEP3120:默认源文件编码为UTF-8
· PEP3131:可以使用非ASCII标识符(然而,除了注释中贡献者的名字之外,标准库仍然只包含ASCII)
· PEP3116:新的IO实现,API几乎100%向后兼容,二进制文件使用bytes代替strings
· 去除了StringIO和cStringIO模块,取而代之的是io.StringIO或者io.BytesIO
PEP3101:字符串格式化的新方法
· str.format方法(原文提到替代了%操作符,实际上,format方法和%的用法差别很大,各有所长)。
PEP3106:修补了dict的keys(),items(),values()方法
· 删除了dict.iterkeys(),dict.itervalues()和dict.iteritems()
· dict.keys(),dict.values()和dict.items()返回dict相关数据的引用
PEP3107:函数注解(FunctionAnnotations)
· 注解函数参数和返回值的标准化方法
Exception Stuff
· PEP352:异常类必须继承自BaseException,它异常结构的基类。
· 移除了StandardError
· Dropping sequence behavior (slicing!)and message attribute of exception instances.
· PEP3109:抛出异常:现在必须使用raiseException(args)而不是原来的raise Exception, args
· PEP3110:捕获异常,现在必须使用exceptException as identifier而不是原来的except Exception,identifier
· PEP3134:异常链(Exceptionchain)。
· 改良了一些windows不能加载模式时的异常信息,具有本地化处理。
New Class and Metaclass Stuff
· 移除了classic class
· PEP3115:新的metaclass语法
· PEP3119:抽象基类。
· PEP3129:类包装。
· PEP3141:数字抽象基类
其他的语言变化

这里列出大多数的Python语言核心和内建函数的变化。
· 移除了backticks(使用repr()代替)
· 移除了<>(不等号,使用!=代替)
· as和with变成了关键字
· True,False和None变成了关键字
· PEP237:long不存在了,只有int,它和原来的long一样。不再支持以L结尾的数字字面量。移除sys.maxint,因为int现在已经是无限大了
· PEP238:int相除,返回float
· 改变了顺序操作符的行为,例如x<y,当x和y类型不匹配时抛出TypeError而不是返回随即的bool值
· 移除了__getslice__,语法a[i:j]被解释成a.__getitem__(slice(i,j))
· PEP3102:keyword-only arguments.在函数参数列表中,出现在*args之后的命名参数只能使用"关键字参数"的形式调用
· PEP3104:nonlocal声明。使用nonlocal可以声明一个外部变量(不是global变量)
· PEP3111:raw_input() 改名为input(),也就是说,新的input()函数从标准输入设备(sys.stdin)读取一行并返回(不包括行结束符),如果输入过早终止,该函数抛出EOFError,如果想使用老的input(),可以使用(input())代替。
· xrange()改名为range(),range()现在不是产生一个列表(list),而是一个迭代器。
· PEP3113:移除了"元组参数拆包(tuple parameter unpacking)"。这种写法已经不行了:
1. deffoo(a, (b, c)):…
2.
3. 现在要这样写:
4.
5. deffoo(a, b_c):
6. b,c = b_c
· PEP3114:next()重命名为__next__(),新的内建函数next()可以调用一个对象的__next__()方法。
· PEP3127:新的八进制字面量,二进制字面量和bin()函数。你应该写0o666而不是0666,oct()函数也做了响应的改动。同样,0b1010等价于10,bin(10)返回"0b1010″。0666这种写法现在是错误的。
· PEP3132:支持迭代器拆包。现在你可以这样写:
1 a,b, *rest = some_seqence
2
3 甚至象这样:
4
5 *rest,a = stuff
6 一般情况下,rest对象是list,而等号右边的对象是可迭代的
· PEP3135:新的super()。你可以不适用任何参数调用super(),正确的参数和实例会被正确选择。如果使用参数,它的行为不变,和以前一样。
· zip(),map(),filter()返回迭代器。
· 移除了string.letters和它的小伙伴们(string.lowcase和string.uppercase),现在上场的是string.ascii_letters等
· 移除了apply(),callable(),exefile(),file(),rece(),reload()
· 移除了dict.has_key()。使用in操作符进行测试
· exec语句没有了,现在是exec()函数
· 移除了__oct__()和__hex__()特殊方法。oct()和hex()方法使用__index__()
· 移除了对__members__和__methods__的支持
· nb_nonzero重命名为nb_bool,__nonzero__()重命名为__bool__()
Optimizations
· 一般情况下,python 3.0比python 2.5慢33%左右。不过仍有提升空间。
模块变动(新的,改进的和废弃的)
· 移除了cPickle模块,可以使用pickle模块代替。最终我们将会有一个透明高效的模块。
· 移除了imageop模块
· 移除了audiodev, Bastion, bsddb185,exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2, rexec, sets, sha,stringold, strop, sunaudiodev, timing和xmllib模块
· 移除了bsddb模块(单独发布,可以从获取)
· 移除了new模块
· os.tmpnam()和os.tmpfile()函数被移动到tmpfile模块下
· tokenize模块现在使用bytes工作。主要的入口点不再是generate_tokens,而是tokenize.tokenize()
Build and C API Changes

Python's build process和C API的改动包括:
· PEP3118:新的Buffer API
PEP3121:扩展模块的的Initialization& Finalization
· PEP3123:使PyObject_HEAD符合标准C
其他的改动和修复

㈩ 如何删除python2 安装python3

建议不要删除
Linux下默认系统自带python2.X的版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新的Python3那么我们知道编译安装源码包和系统默认包之间是没有任何影响的,所以可以安装python3和python2共存
1、下载linux平台的python3.x的安装包(我下载的是python3.6版本)
[root@localhost ~]# wget

2、解压python3.6安装包
[root@localhost ~]# tar xf Python-3.6.1.tgz
[root@localhost ~]# ll
total 22024
-rw-------. 1 root root 1238 Jun 25 10:54 anaconda-ks.cfg
drwxr-xr-x. 17 501 501 4096 Mar 21 03:47 Python-3.6.1
-rw-r--r--. 1 root root 22540566 Mar 21 03:47 Python-3.6.1.tgz

3、安装python3.6,默认安装路径为/usr/local
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]

#安装报错,缺失依赖库
[root@localhost Python-3.6.1]# ./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for python3.6... no
checking for python3... no
checking for python... python
checking for --enable-universalsdk... no
checking for --with-universal-archs... no
checking MACHDEP... linux
checking for --without-gcc... no
checking for --with-icc... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/root/Python-3.6.1':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
#安装依赖库
[root@localhost Python-3.6.1]# yum install gcc

#安装python3.6
[root@localhost Python-3.6.1]# make && make install

#make && make install 报错
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
#安装zlib-devel
[root@localhost Python-3.6.1]# yum install zlib-devel
#重新安装
[root@localhost Python-3.6.1]# make && make install

4、python3.6已安装成功,在/usr/local下生成命令python3

[root@localhost local]# ll /usr/local/bin/
total 24656
lrwxrwxrwx. 1 root root 8 Jun 25 11:22 2to3 -> 2to3-3.6
-rwxr-xr-x. 1 root root 101 Jun 25 11:22 2to3-3.6
-rwxr-xr-x. 1 root root 242 Jun 25 11:22 easy_install-3.6
lrwxrwxrwx. 1 root root 7 Jun 25 11:22 idle3 -> idle3.6
-rwxr-xr-x. 1 root root 99 Jun 25 11:22 idle3.6
-rwxr-xr-x. 1 root root 214 Jun 25 11:22 pip3
-rwxr-xr-x. 1 root root 214 Jun 25 11:22 pip3.6
lrwxrwxrwx. 1 root root 8 Jun 25 11:22 pydoc3 -> pydoc3.6
-rwxr-xr-x. 1 root root 84 Jun 25 11:22 pydoc3.6
lrwxrwxrwx. 1 root root 9 Jun 25 11:22 python3 -> python3.6
-rwxr-xr-x. 2 root root 12604536 Jun 25 11:21 python3.6
lrwxrwxrwx. 1 root root 17 Jun 25 11:22 python3.6-config -> python3.6m-config
-rwxr-xr-x. 2 root root 12604536 Jun 25 11:21 python3.6m
-rwxr-xr-x. 1 root root 3097 Jun 25 11:22 python3.6m-config
lrwxrwxrwx. 1 root root 16 Jun 25 11:22 python3-config -> python3.6-config
lrwxrwxrwx. 1 root root 10 Jun 25 11:22 pyvenv -> pyvenv-3.6
-rwxr-xr-x. 1 root root 441 Jun 25 11:22 pyvenv-3.6

5、使用python3命令查看版本
[root@localhost local]# python3 -V
Python 3.6.1
[root@localhost local]# python3
Python 3.6.1 (default, Jun 25 2017, 11:20:12)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)] on linux
Type "help", "right", "credits" or "license" for more information.

热点内容
苹果安卓战力哪个高 发布:2024-11-08 02:45:04 浏览:532
安卓备份哪个系统好 发布:2024-11-08 02:35:50 浏览:736
unlinklinux 发布:2024-11-08 02:31:30 浏览:663
nginxphp编译 发布:2024-11-08 02:11:57 浏览:979
粉笔手机号注册的密码是什么 发布:2024-11-08 02:01:49 浏览:249
漆黑的魅影文件夹 发布:2024-11-08 01:55:15 浏览:691
c语言病毒编写 发布:2024-11-08 01:55:03 浏览:989
原神修改密码的格式是什么 发布:2024-11-08 01:53:49 浏览:728
从安卓转移数据到苹果报无法通信是什么问题 发布:2024-11-08 01:40:27 浏览:289
云存储虚拟化 发布:2024-11-08 01:32:27 浏览:101