Python 如何将cx_oracle与Pyinstaller捆绑
我的目标是使用Pyinstaller从使用Tkinter和cx_oracle访问数据库的简单python脚本中绑定一个exe文件。python代码是在安装了Anaconda、cx_oracle软件包和oracle客户端的windows计算机上开发的。然后,我需要在许多没有oracle客户端或Python的目标windows机器上运行exe文件 我正在开发机器上使用Python2.7和Pyinstaller 3.1 我在网上搜索了很长一段时间,但只找到了一个关于这方面的教程: 我按照相同的步骤修改了等级库文件,如下所示:Python 如何将cx_oracle与Pyinstaller捆绑,python,oracle,pyinstaller,cx-oracle,Python,Oracle,Pyinstaller,Cx Oracle,我的目标是使用Pyinstaller从使用Tkinter和cx_oracle访问数据库的简单python脚本中绑定一个exe文件。python代码是在安装了Anaconda、cx_oracle软件包和oracle客户端的windows计算机上开发的。然后,我需要在许多没有oracle客户端或Python的目标windows机器上运行exe文件 我正在开发机器上使用Python2.7和Pyinstaller 3.1 我在网上搜索了很长一段时间,但只找到了一个关于这方面的教程: 我按照相同的步骤修
# -*- mode: python -*-
block_cipher = None
a = Analysis(['mycode.py'],
pathex=['C:\\Users\\myuser\\PycharmProjects\\mycode'],
binaries=None,
datas=None,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries + [('oraociei11.dll','D:\ProgramFiles\Anaconda2\oraociei11.dll','BINARY')],
a.zipfiles,
a.datas,
name='mycode',
debug=False,
strip=False,
upx=True,
console=True )
包裹起作用了。代码在安装了oracle客户端的原始计算机上运行。但在没有oracle客户端的单独计算机上,它无法运行,错误消息如下:
Tkinter回调中的异常
回溯(最近一次呼叫最后一次):
调用中第1537行的文件“lib tk\Tkinter.py”
登录名中第152行的文件“”
DatabaseError:DPI-1047:无法加载64位Oracle客户端库:“找不到指定的模块”。求助
现在我非常困惑,要将python脚本中的exe与cx_oracle安全绑定,以便它可以在没有oracle客户端的windows机器上运行,需要哪些步骤?还是“必须”在目标计算机上安装oracle客户端
我真的希望找到一个比我在上面找到的旧链接更详细的教程,介绍如何将cx_oracle与pyinstaller捆绑在一起 cx\u Oracle需要Oracle客户端。你需要在目标机器上安装它!请注意错误消息中的链接:。它将帮助您完成让cx_Oracle在目标机器上运行所需的一切工作。感谢您发布此问题。你在正确的道路上。您只缺少其他.dll文件。您需要将Oracle instant client文件夹中的所有.dll文件添加到.spec文件中。下面是我为instant client 19.10所做的一个示例: a、 binaries=a.binaries+[('oraociei19.dll','。\instantclient_19_10\oraociei19.dll','BINARY')]
- [('orannzsbb19.dll','.\instantclient_19_10\orannzsbb19.dll','BINARY')]
- [('oraocci19d.dll','.\instantclient\u 19\u 10\oraocci19d.dll','BINARY')]
- [('oraocci19.dll','.\instantclient\u 19\u 10\oraocci19.dll','BINARY')]
- [('oci.dll','.\instantclient\u 19\u 10\oci.dll','BINARY')]
- [('ocijdbc19.dll','.\instantclient_19_10\ocijdbc19.dll','BINARY')]
- [('ociw32.dll','.\instantclient\u 19\u 10\ociw32.dll','BINARY')]
- [('oramysql19.dll','.\instantclient\u 19\u 10\oramysql19.dll','BINARY')]
- [('oraons.dll','.\instantclient\u 19\u 10\oraons.dll','BINARY')]
- [('orasql19.dll','.\instantclient\u 19\u 10\orasql19.dll','BINARY')]