Kivy buildozer docker: 在当前目录中找不到 buildozer.spec。放弃

Kivy buildozer docker: No buildozer.spec found in the current directory. Abandon

根据 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 旁边创建了一个名为 kivyproject;C 的空目录。

这是怎么回事?

我运行正在 Windows 上 Git bash shell.

我的问题是 Docker 传递给 --volume 的字符串不是 auto-translated Git bash shell Windows 路径,所以 Docker 期望这样:

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

但得到了这个:

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

解决方案是用 cygpath -w:

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

最好也共享缓存,以免每次 re-download SDK 和 NDK:

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

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