Ошибка двуличности, имеющая отношение к Python?

Таким образом, у меня есть эта ошибка, которая, по-видимому, является известной проблемой. Я ищу обходное решение, пока оно не фиксируется, потому что я не могу позволить себе обойтись без помощи системного резервного копирования.

Traceback (most recent call last):
  File "/usr/bin/duplicity", line 1532, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1526, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1380, in main
    do_backup(action)
  File "/usr/bin/duplicity", line 1401, in do_backup
    sync_archive(decrypt)
  File "/usr/bin/duplicity", line 1139, in sync_archive
    remote_metafiles, ignored, rem_needpass = get_metafiles(remlist)
  File "/usr/bin/duplicity", line 1029, in get_metafiles
    pr = file_naming.parse(fn)
  File "/usr/lib/python2.7/dist-packages/duplicity/file_naming.py", line 400, in parse
    pr = check_inc()
  File "/usr/lib/python2.7/dist-packages/duplicity/file_naming.py", line 340, in check_inc
    t1 = str2time((m1 or m2).group("start_time"), short)
  File "/usr/lib/python2.7/dist-packages/duplicity/file_naming.py", line 290, in str2time
    t = dup_time.genstrtotime(timestr.upper())
  File "/usr/lib/python2.7/dist-packages/duplicity/dup_time.py", line 295, in genstrtotime
    return override_curtime - intstringtoseconds(timestr)
  File "/usr/lib/python2.7/dist-packages/duplicity/dup_time.py", line 203, in intstringtoseconds
    error()
  File "/usr/lib/python2.7/dist-packages/duplicity/dup_time.py", line 194, in error
    raise TimeException(bad_interval_string % interval_string)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

Связанные проблемы:

2
задан 23 May 2017 в 15:39

2 ответа

Базовой проблемой являются строки Unicode - у Вас есть они где-нибудь и Двуличность (или по крайней мере, версия, которую Вы используете возможно) не настроен для обработки строк Unicode правильно. Это происходит из-за протестов Python 2.

<час>

В Python 2, существует два отдельных "строковых" класса типа:

  • str - Это - типичный стандартный кодек ASCII, замеченный во многих системах, и является более или менее просто стандартным A-Z, 0-9, некоторыми символами от набора клавиатуры символов.

  • unicode - Это - кодировка UTF-8, UTF-16, и т.д. кодировка, которая имеет огромный диапазон международных символов, эмодзи, и т.д.

Независимо от того, что передается Двуличности, в этом случае, нас, вероятно, использование символа от наборов символов UTF, который является вне стандартного диапазона ASCII символов. Поэтому мы добираемся UnicodeDecodeError в traceback - мы пытаемся преобразовать строки Unicode в строки ASCII, и мы не можем из-за символов, являющихся вне наборов символов ASCII.

<час>

я предложил бы регистрировать ошибку в Двуличности для записывания, они не обрабатывают Unicode правильно, но я также посмотрел бы на любую Двуличность файлов, обрабатывает, и удостоверьтесь, что у Вас нет символов Unicode (или скрытые секретные управляющие символы) в строках, с которыми это пытается работать.

ПРИМЕЧАНИЕ: Согласно связанным ошибкам, это уже фиксируется; возможно, что это было зафиксировано в более поздняя версия Deja-дубликата, но не версия, которую Вы используете, в этом случае необходимо было бы найти, что Бэкпортированная или Обновленная версия работает вокруг ошибки.

На одной из ошибок, обходное решение переименования имен файлов с внешними наборами символов в наборе Unicode должно быть переименовано к именам файлов только для ASCII, чтобы DejaDup обработал их правильно. Это - единственное известное обходное решение, за исключением обновления к более новому DejaDup verison.

5
ответ дан 2 December 2019 в 01:55

Убедитесь, что вы используете последнюю версию 0.7.12, поскольку в этом отношении произошли некоторые улучшения.

Похоже, двуличность пытается вызвать TimeException , но спотыкается из-за распечатки перевода ошибки.

Текущий обходной путь должен заключаться в установке LC_ALL env var, чтобы запретить перевод на двуличие, и использовании английских строк по умолчанию. Либо экспортируйте параметр, либо поместите его перед вызовом дублирования, например,

LC_ALL=C duplicity ...

Это, конечно, не устранит ошибку, но, по крайней мере, покажет, чем вызвана ошибка (TimeException). [ 114]

.. Эда / duply.net

0
ответ дан 2 December 2019 в 01:55

Другие вопросы по тегам:

Похожие вопросы: