Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将cx_oracle与Pyinstaller捆绑_Python_Oracle_Pyinstaller_Cx Oracle - Fatal编程技术网

Python 如何将cx_oracle与Pyinstaller捆绑

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 我在网上搜索了很长一段时间,但只找到了一个关于这方面的教程: 我按照相同的步骤修

我的目标是使用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')]