如何将Python库从Python2转换为Python3

时间:2019-12-07 07:57:32

标签: python python-3.x python-2.7

我有一个使用“ PyOPC”库(https://github.com/ibh-systems/pyopc)的代码。我通过在开头和结尾添加print来修复所有()语句。

但是,当我安装库时,出现了更多错误。

例如:

  File "c:\anaconda3\lib\site-packages\PyOPC-0.1-py3.7.egg\PyOPC\servers\esdsrv.py", line 90
    def Read(self,(IPH,inOptions,outOptions)):
                  ^
SyntaxError: invalid syntax



  File "c:\anaconda3\lib\site-packages\PyOPC-0.1-py3.7.egg\PyOPC\utils.py", line 313
    def print_options((ilist,Options)):
                      ^
SyntaxError: invalid syntax


  File "c:\anaconda3\lib\site-packages\PyOPC-0.1-py3.7.egg\PyOPC\XDAClient.py", line 46
    except ZSI.FaultException, z:
                             ^
SyntaxError: invalid syntax


  File "c:\anaconda3\lib\site-packages\PyOPC-0.1-py3.7.egg\PyOPC\OPCContainers.py", line 257
    raise AttributeError,'Unknown complex type %s for filling'%buf
                        ^
SyntaxError: invalid syntax

有什么简单的方法可以解决这些问题?我列出了四个主要错误,有人可以告诉我Python3的正确语法吗?

3 个答案:

答案 0 :(得分:3)

参数拆包已删除...类似

def foo(x, (y, z)):
    ...

应更改为

def foo(x, _yz):
    (y, z) = _yz
    ...

答案 1 :(得分:2)

此在线工具可能会帮助https://www.pythonconverter.com/ 基于https://docs.python.org/2/library/2to3.html

编辑:

某些更改

1)打印功能语法已从print "Message"更改为print("Message")
2)xrange替换为range
3)引发异常的语法是raise IOError, "file error"现在是raise IOError("file error")
4)异常处理为

except NameError, err:
    print err, '--> our error message'

现在是

except NameError as err:
    print(err, '--> our error message')

5)my_generator.next()替换为next(my_generator)
6)input()现在总是返回字符串

可以在https://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html

上找到更多更改

答案 2 :(得分:1)

def Read(self,IPH_and_inOptions_and_outOptions):
except ZSI.FaultException as z:
raise AttributeError('Unknown complex type %s for filling'%buf)