【问题标题】:Using Buildozer in Docker - UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2在 Docker 中使用 Buildozer - UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2
【发布时间】:2018-04-05 21:42:47
【问题描述】:

我已经构建了一个 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()

【问题讨论】:

  • 你使用的是什么 docker 镜像?也许这会解决问题:https://github.com/pytorch/text/issues/77#issuecomment-319206865
  • 我正在使用 Ubuntu 16.04 并从那里构建...但是,您的评论可能让我走上了正确的道路。我会尽快报告...谢谢@Jatimir
  • 你能发布你的 buildozer.spec 吗?
  • @Tshirtman - 感谢您提供调查它,但我最终找到了解决方案。我在下面发布了答案。

标签: python docker kivy ubuntu-16.04 buildozer


【解决方案1】:

我已经找到了这个问题的答案,我要感谢 @Jatmir 让我在 cmets 中正确地解决了这个问题。

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

RUN apt-get install -y locales
RUN locale-gen en_US.UTF-8
RUN update-locale en_US.UTF-8

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

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

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

【讨论】:

    猜你喜欢
    • 2013-03-16
    • 1970-01-01
    • 2018-07-29
    • 2017-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    相关资源
    最近更新 更多