Pyinstaller - Как скрыть импорт фильма? - PullRequest
0 голосов
/ 02 апреля 2019

Я хочу преобразовать свой скрипт в .exe и попробовал его с помощью pyinstaller. Проблема в том, что moviepy не импортируется. Я импортировал moviepy как import moviepy.editor as me (в script.py).

Итак, я попробовал скрытый импорт. Команда была: pyinstaller --onefile --hidden-import=moviepy script.py

Выход:

3601 INFO: Analyzing hidden import 'moviepy'  
3601 ERROR: Hidden import 'moviepy' not found

Может ли кто-нибудь помочь мне? Спасибо :)

1 Ответ

0 голосов
/ 13 июля 2019

hidden-imports будет добавлять только сам модуль, а не его зависимости. Кажется, что PyInstaller не может обрабатывать moviepy автоматически, и ему не хватает некоторых зависимостей, таких как imageio-ffmpeg, поэтому вы можете использовать класс Tree и добавить оба moviepy и imageio-ffmpeg в final исполняемый файл.

Ваш файл спецификаций должен выглядеть следующим образом: (Не забудьте отредактировать путь модуля на основе вашего каталога Python)

# -*- mode: python -*-

block_cipher = None


a = Analysis(
    ...
)
a.datas += Tree("./env/Lib/site-packages/moviepy", prefix='moviepy')
a.datas += Tree("./env/Lib/site-packages/imageio_ffmpeg/", prefix='imageio_ffmpeg')
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
...

Наконец, сгенерируйте свой исполняемый файл с помощью:

pyinstaller script.spec
...