【问题标题】:Using a site-packages path for pyinstaller使用 pyinstaller 的站点包路径
【发布时间】:2021-09-17 10:29:45
【问题描述】:

我正在创建一个pyinstaller 规范文件,需要添加一个在库中找到的DLL。这现在在我自己的目录中:

a = Analysis(['eyecommand.py'],
         pathex=['.'],
         binaries=["C:\users\wwade\appdata\local\programs\python\python39\lib\site-packages\pyvjoy\utils\x64\vJoyInterface.dll"],
         datas=added_files,
         hiddenimports=["skimage.filters.rank.core_cy_3d","pynput.keyboard._win32", "pynput.mouse._win32"],
         hookspath=[],
         runtime_hooks=[],
         excludes=[],
         win_no_prefer_redirects=False,
         win_private_assemblies=False,
         cipher=block_cipher,
         noarchive=True)
         

问题是我不想提交该二进制行 - 它会在其他任何人的机器上中断。有没有办法可以“一般”指向site-packages 目录?

%SITEPACKAGES%\pyvjoy\utils\x64\vJoyInterface.dll

【问题讨论】:

    标签: python windows pyinstaller


    【解决方案1】:

    如果你想收集动态库,你可以使用command line switch--collect-binaries <package>(比如你指定的vJoyInterface.dll)。该选项在 PyInstaller 4.3 或更高版本中可用。

    参考你的问题,有类似的here——一个名为get_package_paths()的函数,你可以像这样使用它:

    import os
    from PyInstaller.utils.hooks import get_package_paths
    
    pyvjoy_ = get_package_paths('pyvjoy')[1]
    os.path.join(pyvjoy_, 'utils', 'x64', 'vJoyInterface.dll')
    

    同时,不需要pynput hiddenimports,因为pynput 的新钩子已添加到pyinstaller-hooks-contrib 2021.3 版本中。

    【讨论】:

    • 太棒了。对 pynput 点的额外赞誉(但如果是这样的话 - 为什么这能解决我们的问题).. 我无法让 --collect-binaries 改变我们发现的错误(运行时它说它找不到他vJoyInterface.dll)。所以现在尝试另一种方法。再次感谢
    猜你喜欢
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    相关资源
    最近更新 更多