使用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

posted @ 2019-12-11 09:51  张不正  阅读(1836)  评论(0编辑  收藏  举报
返回顶部