【发布时间】:2018-05-16 04:18:43
【问题描述】:
我的目标是使用 Pyinstaller 从一个使用 Tkinter 和 cx_oracle 访问数据库的简单 python 脚本中捆绑一个 exe 文件。 python代码是在安装了Anaconda、cx_oracle包和oracle客户端的windows机器上开发的。然后我需要在许多目标 Windows 机器上运行 exe 文件没有 oracle 客户端或 Python。
我在开发机器上使用 Python 2.7 和 Pyinstaller 3.1。
我在网上搜索了很长时间,但只找到了一个关于此的教程: https://mail.python.org/pipermail/tutor/2014-December/103608.html
我按照同样的步骤修改了spec文件如下:
# -*- 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 回调异常 回溯(最近一次通话最后): 调用中的文件“lib-tk\Tkinter.py”,第 1537 行 文件“”,第 152 行,登录 DatabaseError:DPI-1047:无法加载 64 位 Oracle 客户端库:“找不到指定的模块”。请参阅https://oracle.github.io/odpi/doc/installation.html#windows 寻求帮助
现在我很困惑,将 python 脚本中的 exe 与 cx_oracle 安全捆绑,以便它可以在没有 oracle 客户端的 Windows 机器上运行,需要哪些步骤?还是我“必须”在目标机器上安装 oracle 客户端?
我真的希望找到比我上面找到的旧链接更详细的关于将 cx_oracle 与 pyinstaller 捆绑在一起的教程。
【问题讨论】:
标签: python oracle pyinstaller cx-oracle