猿问

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

当我使用PyInstaller构建我的应用程序时,如何包含gpg(及其所有依赖项)?

我将使用PyInstaller. 我需要使用gpg,所以我正在使用模块——它基本上只是将 shell 输出到系统上python-gnupg本地安装的二进制文件。gpg

因为我的应用程序被设计成一个“可移植”的可执行文件(我曾经将PyInstaller它与解释器和所有其他依赖项一起提供python),所以我想包含gpg在我的发布中,这样用户就不必在他们的机器上安装它。

如何使用面向 Linux、Windows 和 MacOS 的模块添加gpg二进制文件及其所有依赖项?python-gnupgPyInstaller


拉风的咖菲猫
浏览 166回答 1
1回答

HUH函数

您可以通过使用密钥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', '.'),              ],
随时随地看视频慕课网APP

相关分类

Python
我要回答