在Docker中使用Buildozer - UnicodeDecodeError:' ascii'编解码器不能解码字节0xc2

时间:2018-04-05 21:42:48

标签: python docker kivy ubuntu-16.04 buildozer

我已经构建了一个docker镜像作为Kivy / Python开发的环境。我可以运行代码没问题,我已经能够完成几个Kivy教程。

现在,我正在学习编译我的Kivy应用程序;但是当我尝试使用Buildozer编译apk时,我收到以下错误:

Traceback (most recent call last):
File "/usr/local/bin/buildozer", line 11, in <module>
sys.exit(main())
File "/usr/local/lib/python3.5/dist- 
packages/buildozer/scripts/client.py", line 13, in main
Buildozer().run_command(sys.argv[1:])
File "/usr/local/lib/python3.5/dist-packages/buildozer/__init__.py", line 
122, in __init__
self.config.read(filename)
File "/usr/lib/python3.5/configparser.py", line 696, in read
self._read(fp, filename)
File "/usr/lib/python3.5/configparser.py", line 1012, in _read
for lineno, line in enumerate(fp, start=1):
File "/usr/lib/python3.5/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 
1661: ordinal not in range(128)

我试图通过搜索终端输出的这一部分而没有成功UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1661: ordinal not in range(128)来找到解决方案 - 结果似乎没有一个与我的情况直接相关。

我喜欢列出我尝试过的所有内容,但如果我是诚实的,我是一个非常新手的开发人员而且我设法彻底迷惑自己这里。

如果有人可以告诉我如何处理这个问题并解决它,我将非常感激。

这是我试图首先编译的简单应用程序 - 没有什么花哨的:

from kivy.app import App
from kivy.uix.scatter import Scatter
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout


class TutorialApp(App):
    def build(self):
    f = FloatLayout()
    s = Scatter() 
    l= Label(text="Hello World!",
             font_size=150)
    # variables children of 'f'
    f.add_widget(s)
    s.add_widget(l)
    return f

if __name__ == "__main__":
    TutorialApp().run()

1 个答案:

答案 0 :(得分:0)

我已经得到了这个问题的答案,我要感谢@Jatmir在评论的评论中向我发送正确的道路。

问题是我使用的base-Ubuntu-image默认情况下不包含任何语言环境。为了将它们添加到我正在构建的图像中,我将以下命令添加到我的Dockerfile中:

export LC_ALL=$(locale -a | grep en_US)
export LANG=$(locale -a | grep en_US)

然后,我只是在容器中运行这些命令并提交它:

{{1}}

或者,您可以将这些变量添加到Dockerfile中,或者在运行命令时声明它们。任何所述方法都应该有效。