LINUX.ORG.RU

ImportError: cannot import name 'log'

 , ,


1

1

ЛОР, помоги завести rdiff-backup-1.9.1b0 на федоре 23! Я успешно собрал rpm-пакет с помощью mock, там что-то внутри скомпилировалось (не понимаю, что в питоне нужно компилировать, но ладно). Устанавливаю, запускаю - не работает:

# rdiff-backup --version
Traceback (most recent call last):
  File "/usr/bin/rdiff-backup", line 19, in <module>
    import rdiff_backup.Main
  File "/usr/lib/python3.4/site-packages/rdiff_backup/Main.py", line 29, in <module>
    from .log import Log, LoggerError, ErrorLog
  File "/usr/lib/python3.4/site-packages/rdiff_backup/log.py", line 27, in <module>
    from . import Globals, rpath
  File "/usr/lib/python3.4/site-packages/rdiff_backup/Globals.py", line 23, in <module>
    from . import log
ImportError: cannot import name 'log'

исходники те же, что и на основной системе с 29й федорой 64 бит, где всё прекрасно работает: https://github.com/rdiff-backup/rdiff-backup/tree/v1.9.1b0

И там и там 3й питон (конкретно тут Python 3.4.3).

Файл /usr/lib/python3.4/site-packages/rdiff_backup/Globals.py:

# Copyright 2002 Ben Escoto
<...>
"""Hold a variety of constants usually set at initialization."""

import re
import os
from . import log
<...>

файл /usr/lib/python3.4/site-packages/rdiff_backup/log.py

# Copyright 2002 Ben Escoto
<...>
"""Manage logging, displaying and recording messages with required verbosity"""

import datetime
import sys
import traceback
import types
import re
import os  # needed to grab verbosity as environment variable
from . import Globals, rpath

<...>

Питоноведы, объясните, чего ему не правится? Почему такое куцее сообщение об ошибке? Как это исправить/обойти?

Я думал, что конфликт имён с log, и пробовал переименовать файл в mylog.py и импортировать как from . import mylog as log - проглатывает, но потом такая же ошибка происходит с другим файлом, например с Globals.py, который до этого нормально импортировался.

PS ставить родную для 23 федорки версию rdiff-backup не могу (нет смысла) - все в сети должны быть одинаковыми, а ниже 1.9.1b0 для андроида нет.

★★★★★

Ответ на: комментарий от router

Python 3.5 or higher

ну и как бы вот причина:

File «/usr/lib/python3.4/site-packages/rdiff_backup/log.py», line 27, in from . import Globals, rpath File «/usr/lib/python3.4/site-packages/rdiff_backup/Globals.py», line 23, in from . import log ImportError: cannot import name ‘log’

Т.е. log хочет Globals, а Globals хочет log. А между тем «circular imports are allowed on python 3.5»

router ★★★★★ ()
Ответ на: комментарий от router

Этот пакет ставится рядом с системным, так что мне не придётся всю инсталляцию перекорёживать. Родной питон я могу и из реп 24 федоры поставить, с апгрейдом миллиона пакетов, от него зависимых.

Только непонятно пока, экак этот сбоку прикрученый пакет задействовать в rdiff-backup.

legolegs ★★★★★ ()