使用pyinstaller打包使用cx_Oracle模塊的程序出現The specified module could not be found的問題


pyinstaller看起來並不會將動態鏈接庫自動打包,所以我們需要告訴pyinstaller要打包哪些動態鏈接庫,步驟如下(假設python文件名為 oracletest.py):

1. 使用pyinstaller -F oracletest.py 打包后會生成一個oracletest.spec文件,我們要修改這個spec文件。

將 a.binaries, 改為

a.binaries+[('oraociei12.dll','C:\\oracle\\instantclient_12_2\\oraociei12.dll','BINARY'),('oci.dll','C:\\oracle\\instantclient_12_2\\oci.dll','BINARY'),('oraons.dll','C:\\oracle\\instantclient_12_2\\oraons.dll','BINARY')],

 

以上路徑需要參照oracle instantclient 的存放目錄進行修改。

 

2. 依照spec文件打包,執行命令如下:

pyinstaller -F oracletest.spec

 

3.現在打包之后會將動態鏈接庫打包進exe包。因為oracle的這幾個動態鏈接庫非常大,所以導致打包完的exe包也非常大。

 

以上方法參考stackoverflow的解決方案,經個人實測發現里面提到的動態鏈接庫還不夠,我這里用到的動態鏈接庫如上文所述。

參考鏈接:https://stackoverflow.com/questions/36478831/pyinstaller-cx-oracle-interfaceerror-unable-to-acquire-oracle-environment-hand/36483476


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM