python - 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
有人可以帮助我吗?谢谢 :)
解决方案
hidden-imports
只会添加模块本身而不是它的依赖项。PyInstaller 似乎无法moviepy
自动处理,并且它缺少一些依赖项,例如imageio-ffmpeg
,因此您可以使用Tree
class 并将两者都添加moviepy
到imageio-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
推荐阅读
- c - 二进制数的递归打印
- azure-devops - Azure DevOps 部署组代理需要哪些权限?
- node.js - 我正在尝试设置一个可以从另一个 FTP 服务器提取数据的 Node.js FTP 服务器
- apache-spark - 如何按字母顺序然后按数字排序
- windows - 用于 VM 的 Ubuntu 或 Kali 下载
- c++ - 为什么我看不到 foo_b(2) 和 foo_c(3) 的结果?
- python - Python:验证字符串是否代表有效的美国货币值?
- reactjs - React: Unable to change value by a function in setState
- numpy - numpy method for tensors in TensorFlow 2.x and eager execution
- python - 使用数据框位置数据创建 folium 地图