python程序中使用到requests,在開發環境中可以正常運行,但用pyinstaller 打包成單個exe文件後,卻無法運行,提示 requests 中的urllib3依賴的一個six.py模塊出現運行錯誤,提示 no module named 'queue' 接着導致提示 no module named 'urllib3'
six.py提示錯誤在82行
def _import_module(name):
"""Import module, returning the module after the last dot."""
__import__(name) #82
return sys.modules[name]
看起來像是自動導入模塊,查了些資料瞭解sys.modules 是個字典存儲有python啓動到現在,已加載的模塊
我的程序中沒有直接用queue模塊的地方,打包後也沒有其他途徑加載這個模塊,導致找不到。開發環境中運行卻無錯(猜測開發環境啓動時自動加載了一些模塊,可能是給用戶環境準備的,也可能是開發工具自己要使用就先加載了),嘗試在自己的程序中,顯示導入這個模塊(注該模塊是標準庫中一部分),儘管程序中沒有使用到。
再次打包,運行exe文件,成功,問題解決