首页 > 解决方案 > Kivy buildozer docker:在当前目录中找不到 buildozer.spec。放弃

问题描述

根据https://github.com/kivy/buildozer/上的说明构建了一个 buildozer Docker ,我尝试运行它并得到一个错误:

kivyproject $ ls
main.py
buildozer.spec
setup.py
[...]
kivyproject $ docker run --volume "$(pwd)":/home/user/hostcwd buildozer android debug
# Ensure build layout
No buildozer.spec found in the current directory. Abandon.

kivyproject另外,我发现在called旁边创建了一个空目录kivyproject;C

到底是怎么回事?

我从 Git bash shell 在 Windows 上运行。

标签: pythondockerkivybuildozer

解决方案


我的问题是 Docker 传递给的字符串--volume没有被 Git bash shell 自动翻译成 Windows 路径,所以 Docker 期望这样:

--volume "c:\...\kivyproject:/home/user/hostcwd"

但得到了这个:

--volume "/c/.../kivyproject:/home/user/hostcwd"

解决方案是pwdcygpath -w

kivyproject $ docker run --volume "$(cygpath -w $(pwd))":/home/user/hostcwd buildozer android debug deploy

共享缓存也是个好主意,以免每次都重新下载 SDK 和 NDK:

kivyproject $ docker run --volume "$(cygpath -w $HOME/.buildozer)":/home/user/.buildozer --volume "$(cygpath -w $(pwd))":/home/user/hostcwd buildozer android debug deploy

为了解决这个问题,我更改了Dockerfilefrom ENTRYPOINT ["buildozer"]to的最后一行,ENTRYPOINT ["bash"]然后我可以运行docker run --volume [...] -it bulldozer,获取一个 shell 并看到它看到的是一个空目录。然后我注意到在我的工作目录旁边创建了一个目录,名为workingdirname;C并怀疑是 cygwin 路径恶作剧。


推荐阅读