關於Pyinstaller在打包Streamlit程式時遇到的IndexError:tuple index out of range

OlderV發表於2024-03-11

如題,在使用Pyinstaller庫打包過程中,如果遇到IndexError:tuple index out of range,不必驚慌,本質上是庫函式在傳參過程中出現異常
image

下面是解決方案:

找到..\envs\steamlit\lib\dis.py這個檔案。
如果你是用的虛擬環境,比如conda,那這個檔案位於anaconda的安裝目錄
"E:\SOFTWARE\ANACONDA\envs\steamlit\lib\dis.py"
還有一種可以就是觀察報錯資訊,一般來說最後一條報錯資訊就是指向這個檔案。雙擊開啟編輯就好(PyCharm)

image

在這個檔案中進行搜尋
搜尋內容為_unpack_opargs
找到以這個關鍵詞為名的函式
else:分支下新增一行程式碼extended_arg = 0
結果為下面所示。

def _unpack_opargs(code):
    extended_arg = 0
    for i in range(0, len(code), 2):
        op = code[i]
        if op >= HAVE_ARGUMENT:
            arg = code[i+1] | extended_arg
            extended_arg = (arg << 8) if op == EXTENDED_ARG else 0
        else:
            arg = None
            extended_arg = 0
        yield (i, op, arg)

這樣應該就能正常打包了(*^_^*)

相關文章