Pyinstaller不包含libsndfile

时间:2018-11-23 02:43:18

标签: python-3.x pyinstaller libsndfile

我使用以下代码和pyinstaller创建了一个可执行文件:

import soundfile

print("Hello!")
input("Ok")

但是它不能正确运行。我收到以下错误:

Traceback (most recent call last):
  File "lib\site-packages\soundfile.py", line 142, in <module>
OSError: sndfile library not found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "prueba.py", line 1, in <module>
    import soundfile
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "C:\Users\DianaCarolina\Google Drive\Humboldt\DTF_GUI\venv1\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
    exec(bytecode, module.__dict__)
  File "lib\site-packages\soundfile.py", line 163, in <module>
OSError: cannot load library 'C:\Users\DianaCarolina\Google Drive\Humboldt\DTF_GUI\dist\prueba\_soundfile_data\libsndfile32bit.dll': error 0x7e
[9780] Failed to execute script prueba

由于我使用了标准的pyinstaller命令pyinstaller prueba.py,因此可以通过将_soundfile_data文件夹复制到dist文件夹中来使可执行文件正常工作。但是,我想使用--onefile选项使程序更易于分发。如何使pyinstaller正常运行?

2 个答案:

答案 0 :(得分:0)

像这样添加为外部挂钩

pyinstaller <your parameters> --hidden-import='package.module'

答案 1 :(得分:0)

在这种情况下,您可以使用--add-binary选项。例如:

--add-binary /path/to/_soundfile_data/libsndfile.dylib:_soundfile_data

就我而言,我发现(活动的)conda环境pysndfile已安装并从中获取libsndfile:--add-binary $(dirname $(which python))/../lib/python3.7/site-packages/_soundfile_data/libsndfile.dylib:_soundfile_data