【问题标题】:snapcraft register failing with "can't encode character"snapcraft 寄存器因“无法编码字符”而失败
【发布时间】:2018-02-20 05:36:45
【问题描述】:

我正在 (https://tutorials.ubuntu.com/tutorial/create-your-first-snap) 完成创建您的第一个 Snap 教程

我已完成第 7 步(上传到商店),但卡在了注册应用名称的步骤。

运行snapcraft register hello-pward123

返回以下 python 错误堆栈:

Traceback (most recent call last):
  File "/usr/bin/snapcraft", line 9, in <module>
    load_entry_point('snapcraft==2.33', 'console_scripts', 'snapcraft')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load
    return self.resolve()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/lib/python3/dist-packages/snapcraft/cli/__main__.py", line 19, in <module>
    run(prog_name='snapcraft')
  File "/usr/lib/python3/dist-packages/click/core.py", line 716, in __call__
    return self.main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/click/core.py", line 696, in main
    rv = self.invoke(ctx)
  File "/usr/lib/python3/dist-packages/click/core.py", line 1060, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/usr/lib/python3/dist-packages/click/core.py", line 889, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/usr/lib/python3/dist-packages/click/core.py", line 534, in invoke
    return callback(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/snapcraft/cli/store.py", line 76, in register
    if click.confirm(_MESSAGE_REGISTER_CONFIRM.format(snap_name)):
  File "/usr/lib/python3/dist-packages/click/termui.py", line 138, in confirm
    echo(prompt, nl=False, err=err)
  File "/usr/lib/python3/dist-packages/click/utils.py", line 259, in echo
    file.write(message)
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2018' in position 255: ordinal not in range(256)

我的 snapfile.yaml 看起来像:

name: hello-pward123
version: '2.10'
summary: GNU Hello, the hello world snap
description: |
  GNU hello prints a friendly greeting.
grade: devel
confinement: strict

apps:
  hello:
    command: bin/hello

  bash:
    command: bash

parts:
  gnu-hello:
    source: http://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz
    plugin: autotools

  gnu-bash:
    source: http://ftp.gnu.org/gnu/bash/bash-4.3.tar.gz
    plugin: autotools
    configflags: ["--infodir=/var/bash/info"]

我在 Ubuntu 16.04.3 上运行 snapcraft 2.33

【问题讨论】:

    标签: python snapcraft


    【解决方案1】:

    我们使用click 来解析cli,它需要UTF-8 作为documented here

    也就是说,这个错误很不幸,应该修复。

    【讨论】:

      猜你喜欢
      • 2015-10-08
      • 2020-02-17
      • 2017-03-25
      • 2011-02-20
      • 2011-04-22
      • 2013-06-25
      • 1970-01-01
      相关资源
      最近更新 更多