使用WSL打包Kivy应用为APK时遇FileNotFoundError:找不到unzip
解决WSL中Buildozer打包Kivy项目时的
unzip缺失问题 错误详情
执行Buildozer打包APK时出现以下错误:
# Unpacking Android NDK # Run ['unzip', '-q', '/home/tarpetos/.buildozer/android/platform/android-ndk-r23b-linux.zip'] # Cwd /home/tarpetos/.buildozer/android/platform Traceback (most recent call last): File "/usr/local/bin/buildozer", line 11, in <module> load_entry_point('buildozer==1.4.1.dev0', 'console_scripts', 'buildozer')() File "/usr/local/lib/python3.8/dist-packages/buildozer-1.4.1.dev0-py3.8.egg/buildozer/scripts/client.py", line 13, in main Buildozer().run_command(sys.argv[1:]) File "/usr/local/lib/python3.8/dist-packages/buildozer-1.4.1.dev0-py3.8.egg/buildozer/__init__.py", line 1024, in run_command self.target.run_commands(args) File "/usr/local/lib/python3.8/dist-packages/buildozer-1.4.1.dev0-py3.8.egg/buildozer/target.py", line 93, in run_commands func(args) File "/usr/local/lib/python3.8/dist-packages/buildozer-1.4.1.dev0-py3.8.egg/buildozer/target.py", line 103, in cmd_debug self.buildozer.prepare_for_build() File "/usr/local/lib/python3.8/dist-packages/buildozer-1.4.1.dev0-py3.8.egg/buildozer/__init__.py", line 172, in prepare_for_build self.target.install_platform() File "/usr/local/lib/python3.8/dist-packages/buildozer-1.4.1.dev0-py3.8.egg/buildozer/targets/android.py", line 701, in install_platform self._install_android_ndk() File "/usr/local/lib/python3.8/dist-packages/buildozer-1.4.1.dev0-py3.8.egg/buildozer/targets/android.py", line 497, in _install_android_ndk self.buildozer.file_extract(archive, File "/usr/local/lib/python3.8/dist-packages/buildozer-1.4.1.dev0-py3.8.egg/buildozer/__init__.py", line 616, in file_extract self.cmd(["unzip", "-q", join(cwd, archive)], cwd=cwd) File "/usr/local/lib/python3.8/dist-packages/buildozer-1.4.1.dev0-py3.8.egg/buildozer/__init__.py", line 289, in cmd process = Popen(command, **kwargs) File "/usr/lib/python3.8/subprocess.py", line 858, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.8/subprocess.py", line 1704, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'unzip'
问题原因
unzip是Linux系统中用于解压ZIP压缩文件的命令行工具,你的WSL环境未安装该工具,导致Buildozer在解压Android NDK压缩包时失败。
解决步骤
在WSL终端中执行对应命令安装unzip:
- 若使用Ubuntu/Debian系发行版:
sudo apt update && sudo apt install unzip -y
- 若使用Fedora/RHEL系发行版:
sudo dnf install unzip -y
安装完成后,重新运行Buildozer打包命令即可。
音频文件打包补充提示
虽然本次错误与音频文件无关,但打包时需确保connection_voice.ogg被正确纳入APK。可在项目的buildozer.spec文件中添加以下配置:
# 包含指定格式的资源文件 source.include_exts = py,png,jpg,kv,atlas,ogg # 或直接指定单个文件 source.include_files = connection_voice.ogg
内容的提问来源于stack exchange,提问作者tarpetos
相关产品推荐
相关产品推荐

