首页 > 解决方案 > Pyinstaller - 如何隐藏导入moviepy?

问题描述

我想将我的脚本转换为 .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

有人可以帮助我吗?谢谢 :)

标签: pythonpython-3.xexepyinstallermoviepy

解决方案


hidden-imports只会添加模块本身而不是它的依赖项。PyInstaller 似乎无法moviepy自动处理,并且它缺少一些依赖项,例如imageio-ffmpeg,因此您可以使用Treeclass 并将两者都添加moviepyimageio-ffmpeg最终的可执行文件中。

您的规范文件应如下所示:(请记住根据您的 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

推荐阅读