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 路径恶作剧。
根据 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 路径恶作剧。