Python VLC нуждается во внешних зависимостях, таких как DLL, которую вы видите в ошибке.Таким образом, вам нужно добавить их в ваш исполняемый файл с помощью add-data
.
Просто скопируйте все *.dll
в вашем текущем пути установки VLC (например, C:\Program Files\VideoLAN\VLC
), кроме вашего скрипта ииспользуйте команду ниже для генерации вашего исполняемого файла:
pyinstaller.exe -F --add-data "./libvlc.dll;." --add-data "./axvlc.dll;." --add-data "./libvlccore.dll;." --add-data "./npvlc.dll;." script.py
Редактировать: Кажется, вам все еще нужна еще одна зависимость, которая является каталогом plugins
.Просто добавьте весь каталог плагинов в вашем пути VLC к вашему выводу исполняемого файла.Для этого после выполнения вышеприведенной команды вы получите спецификационный файл, добавив a.datas += Tree('<path_to_vlc_plugins_dir>', prefix='plugins')
в файл, подобный этому:
# -*- mode: python -*-
block_cipher = None
a = Analysis(['script.py'],
pathex=['<root_project_path>'],
binaries=[],
datas=[('./libvlc.dll', '.'), ('./axvlc.dll', '.'), ('./libvlccore.dll', '.'), ('./npvlc.dll', '.')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
a.datas += Tree('<path_to_vlc_plugins_dir>', prefix='plugins')
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='script',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True )
Наконец, выполните это:
pyinstaller script.spec