为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 GnuPG (gpg) 可执行文件和依赖项 (PyInstaller)

如何使用 GnuPG (gpg) 可执行文件和依赖项 (PyInstaller)

拉风的咖菲猫 2023-06-06 16:20:01
当我使用PyInstaller构建我的应用程序时,如何包含gpg(及其所有依赖项)?我将使用PyInstaller. 我需要使用gpg,所以我正在使用模块——它基本上只是将 shell 输出到系统上python-gnupg本地安装的二进制文件。gpg因为我的应用程序被设计成一个“可移植”的可执行文件(我曾经将PyInstaller它与解释器和所有其他依赖项一起提供python),所以我想包含gpg在我的发布中,这样用户就不必在他们的机器上安装它。如何使用面向 Linux、Windows 和 MacOS 的模块添加gpg二进制文件及其所有依赖项?python-gnupgPyInstaller
查看完整描述

1 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

您可以通过使用密钥gpg添加二进制文件及其所有依赖项,将 GnuPG 与 PyInstaller 构建的应用程序打包在一起。Analysis.datas

视窗

在 Windows 上,我通过反复试验得到了它。首先,我只是在整个系统中搜索gpg.exe二进制文件。在电源外壳中:

> Get-Command gpg
    0.0.0.0    C:\Program Files\Git\usr\bin\gpg.exe
>

然后我.spec通过更改此部分将其添加到我的 PyInstaller 文件中

a = Analysis(['..\\src\\main.py'],

             pathex=['.\\'],

             binaries=[],

             datas=[],

             hiddenimports=['pkg_resources.py2_warn', 'libusb1'],

             hookspath=[],

             runtime_hooks=[],

             excludes=[],

             win_no_prefer_redirects=False,

             win_private_assemblies=False,

             cipher=block_cipher,

             noarchive=False)


进入这个


a = Analysis(['..\\src\\main.py'],

             pathex=['.\\'],

             binaries=[],

             datas=

              [

               ('C:\\Program Files\\Git\\usr\\bin\\gpg.exe', '.'),              ],

             hiddenimports=['pkg_resources.py2_warn', 'libusb1'],

             hookspath=[],

             runtime_hooks=[],

             excludes=[],

             win_no_prefer_redirects=False,

             win_private_assemblies=False,

             cipher=block_cipher,

             noarchive=False)


经过上述更改后,我的应用程序会弹出警告错误,例如:


The code execution cannot proceed because msys-bz2-1.dll was not found. Reinstalling the program may fix this problem.

一个接一个,我一直在寻找(Get-Command如上所示在 powershell 中使用)并添加.dll它抱怨的文件,直到我datas在上面的规范文件中包含以下内容,这些内容有效:


             datas=

              [

               ( '..\\KEYS', '.' ),

               ('C:\\Program Files\\Git\\usr\\bin\\gpg.exe', '.'),

               ('C:\\msys64\\usr\\bin\\msys-bz2-1.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-assuan-0.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-gcrypt-20.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-gpg-error-0.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-2.0.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-readline8.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-z.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-sqlite3-0.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-iconv-2.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-intl-8.dll', '.'),

               ('C:\\msys64\\usr\\bin\\msys-ncursesw6.dll', '.'),

              ],

查看完整回答
反对 回复 2023-06-06
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信