Pyinstaller не включает libsndfile - PullRequest
       79

Pyinstaller не включает libsndfile

0 голосов
/ 23 ноября 2018

Я создал исполняемый файл с этим кодом и 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 голосов
/ 17 марта 2019

Вы можете использовать опцию --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

0 голосов
/ 30 ноября 2018

добавить как внешний крючок вот так

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