pyav не распознается после установки скрипта с помощью pyinstaller

Вопрос или проблема

pyav не распознается после установки скрипта с помощью pyinstaller

Я пытаюсь создать скрипт с использованием pyav, чтобы собрать его в исполняемый файл.

(строка представляет собой простое import av в основном скрипте)

Исполняемый файл не запускается из-за типичной ошибки «модуль не найден»: Нет модуля с именем ‘av’

Мой импорт не скрыт, он находится в основном скрипте. (я также пытался установить с помощью pyinstaller с опцией –hidden-import=av. Это не дало никаких изменений)

Я использую последнюю версию pyinstaller и версию python 3.9

Я добавил это, когда запускал мой bash-скрипт. При выполнении команды freeze я вижу, что pyav установлен.

pyinstaller.exe myscript.py --onefile
pip freeze

Есть идеи, что здесь не так?

Вот мой spec файл

# -*- mode: python ; coding: utf-8 -*-

a = Analysis(
    ['myscript.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name="myscript",
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, что PyInstaller не может найти модуль PyAV при сборке вашего исполняемого файла. Хотя вы провели установку и видите модуль в списке установленных пакетов, PyInstaller может не правильно обработать некоторые зависимости. Давайте рассмотрим шаги, которые могут помочь в решении этой проблемы.

1. Убедитесь, что PyAV установлен корректно

Прежде всего, убедитесь, что вы установили PyAV правильно. Выполните команду:

pip install av

Убедитесь, что у вас установлена последняя версия, совместимая с вашей версией Python.

2. Проверьте зависимости PyAV

PyAV зависит от библиотек FFmpeg. Убедитесь, что FFmpeg установлен и доступен в вашей системе. Вы можете проверить это, выполнив команду:

ffmpeg -version

Если команда не распознается, вам нужно установить FFmpeg и добавить его в переменную окружения PATH.

3. Добавьте явный импорт в ваш исполняемый файл

Вы правильно attempted использовать флаг --hidden-import. Однако иногда необходимо указать дополнительные зависимости в вашем .spec файле. В вашем случае добавьте av в секцию hiddenimports, вот так:

hiddenimports=['av'],

Ваш обновленный .spec файл должен выглядеть так:

# -*- mode: python ; coding: utf-8 -*-

a = Analysis(
    ['myscript.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=['av'],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name="myscript",
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

4. Пересоберите ваш исполняемый файл

После внесения всех изменений пересоберите ваш исполняемый файл, используя следующую команду:

pyinstaller myscript.spec

5. Путем отладки

Если проблема остается нерешенной, попробуйте следующее:

  • Запустите вашу основную программу (не в виде исполняемого файла), чтобы убедиться, что нет других ошибок.
  • Пересоздайте виртуальную среду, чтобы исключить конфликты версий библиотек.
  • Попробуйте собрать исполняемый файл без флага --onefile, чтобы увидеть, будут ли какие-либо дополнительные файлы или библиотеки недоступны.

6. Проверка успешной сборки

После успешной сборки и запуска исполняемого файла проверьте наличие ошибок. Если ошибки продолжат возникать, предоставьте стек вызовов и дополнительные сведения для дальнейшего анализа.

Следуя этим шагам, вы сможете решить проблему с отсутствующим модулем PyAV и успешно собрать ваш исполняемый файл с помощью PyInstaller. Если у вас остались вопросы, не стесняйтесь их задавать!

Оцените материал
Добавить комментарий

Капча загружается...