如何将所有库(.so/.dll)文件放在子目录中?

sun*_*ata 5 pyinstaller

我正在将 Pyinstaller 用于我的跨平台项目,并希望将所有库文件(.so/.dll)“隐藏”在子目录中,以便更容易找到可执行文件(现在是 .so/ 的列表) .dll 文件太长,以至于我们收到了无法找到它的用户的反馈!)

如何修改我的 .spec 文件以将所有 .so/.dll 文件放入子目录中?

--one-file(由于其他原因我不想使用)

这就是我的 .spec 文件对于 gnu/linux 的样子(对于 Macos 和 Windows,文件类似):

# -*- mode: python -*-

block_cipher = None

import os
cwd_str = os.getcwd()

a = Analysis(['mindfulness-at-the-computer.py'],
             pathex=[cwd_str],
             binaries=[],
             datas=[('./README.md', '.'), ('./LICENSE.txt', '.')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)

user_files_dir_str = "user_files"
a.datas += Tree('./' + user_files_dir_str, prefix=user_files_dir_str, excludes=['*.db'])
icons_dir_str = "icons"
a.datas += Tree('./' + icons_dir_str, prefix=icons_dir_str)

pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          exclude_binaries=True,
          name='mindfulness-at-the-computer',
          debug=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               name='mindfulness-at-the-computer')
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助和亲切的问候,托德