簡體   English   中英

如何將 Python 庫從 Python2 轉換為 Python3

[英]How to convert a Python library from Python2 to Python3

我有一個使用“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 中的正確語法嗎?

參數解包已被刪除......像

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

應該改為

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

這個在線工具可以幫助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上找到

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM