Bug 35052

Summary: import Image: Attempted relative import in non-package
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: python-module-PillowAssignee: Vitaly Lipatov <lav>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: antohami, cas, cow, darktemplar, evg, george, grenka, grenka, imz, lav, mithraen, nbr, qa_viy, rider, sem, shaba, sin, slev, vitty, viy
Version: unstable   
Hardware: all   
OS: Linux   

Description Vitaly Lipatov 2018-06-17 20:09:02 MSK
$ python
impPython 2.7.14 (default, May 31 2018, 14:35:46) 
[GCC 7.3.1 20180303 (ALT 7.3.1-alt4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import Image
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib64/python2.7/site-packages/PIL/Image.py", line 27, in <module>
    from . import VERSION, PILLOW_VERSION, _plugins
ValueError: Attempted relative import in non-package
>>>
Comment 1 Vitaly Lipatov 2018-06-17 20:21:22 MSK
Пример использования такой:
try:
    from PIL import Image
    dir(Image) # Placate PyFlakes
except ImportError:
    import Image

Ошибка воспроизводится при ошибке загрузки PIL — идёт сваливание в workaround, который с Pillow не работает.
Comment 2 Grigory Ustinov 2018-06-26 15:27:02 MSK
$ imgv
imgv running in python2.4 doesn't support MPEG MOVIES on your platform currently
Traceback (most recent call last):
  File "/usr/share/imgv/imgv.py", line 28, in <module>
    from handle_keyboard import handle_keyboard
  File "/usr/share/imgv/handle_keyboard.py", line 17, in <module>
    from verbose import command_verbose_info
  File "/usr/share/imgv/verbose.py", line 15, in <module>
    import Image # PIL
  File "/usr/lib64/python2.7/site-packages/PIL/Image.py", line 27, in <module>
    from . import VERSION, PILLOW_VERSION, _plugins
ValueError: Attempted relative import in non-package

Опять Pillow портит пакеты.
Comment 3 Vitaly Lipatov 2018-07-01 23:55:23 MSK
(В ответ на комментарий №2)
> $ imgv
> imgv running in python2.4 doesn't support MPEG MOVIES on your platform
> currently
> Traceback (most recent call last):
>   File "/usr/share/imgv/imgv.py", line 28, in <module>
>     from handle_keyboard import handle_keyboard
>   File "/usr/share/imgv/handle_keyboard.py", line 17, in <module>
>     from verbose import command_verbose_info
>   File "/usr/share/imgv/verbose.py", line 15, in <module>
>     import Image # PIL
>   File "/usr/lib64/python2.7/site-packages/PIL/Image.py", line 27, in <module>
>     from . import VERSION, PILLOW_VERSION, _plugins
> ValueError: Attempted relative import in non-package
> 
> Опять Pillow портит пакеты.
Как ни странно, он вообще не совместим с PIL при подключении, поэтому старые пакеты надо пропатчить или выкинуть.

То, что import Image как-то работало, было ошибкой, удалю в следующей сборке.
Предлагается подключать так:
from PIL import Image
Comment 4 Vitaly Lipatov 2018-07-03 10:13:22 MSK
(В ответ на комментарий №2)
> $ imgv
> imgv running in python2.4 doesn't support MPEG MOVIES on your platform
> currently
> Traceback (most recent call last):
>   File "/usr/share/imgv/imgv.py", line 28, in <module>
>     from handle_keyboard import handle_keyboard
>   File "/usr/share/imgv/handle_keyboard.py", line 17, in <module>
>     from verbose import command_verbose_info
>   File "/usr/share/imgv/verbose.py", line 15, in <module>
>     import Image # PIL
>   File "/usr/lib64/python2.7/site-packages/PIL/Image.py", line 27, in <module>
>     from . import VERSION, PILLOW_VERSION, _plugins
> ValueError: Attempted relative import in non-package
> 
> Опять Pillow портит пакеты.
Это была ошибка в его сборке, что он вообще предоставляет модули Image*.
Исправил это и собрал python-module-PIL-compat (обёртку вокруг Pillow), который позволяет таким старым программам работать.
Comment 5 Grigory Ustinov 2018-07-19 16:04:59 MSK
(В ответ на комментарий №4)
> (В ответ на комментарий №2)
> > $ imgv
> > imgv running in python2.4 doesn't support MPEG MOVIES on your platform
> > currently
> > Traceback (most recent call last):
> >   File "/usr/share/imgv/imgv.py", line 28, in <module>
> >     from handle_keyboard import handle_keyboard
> >   File "/usr/share/imgv/handle_keyboard.py", line 17, in <module>
> >     from verbose import command_verbose_info
> >   File "/usr/share/imgv/verbose.py", line 15, in <module>
> >     import Image # PIL
> >   File "/usr/lib64/python2.7/site-packages/PIL/Image.py", line 27, in <module>
> >     from . import VERSION, PILLOW_VERSION, _plugins
> > ValueError: Attempted relative import in non-package
> > 
> > Опять Pillow портит пакеты.
> Это была ошибка в его сборке, что он вообще предоставляет модули Image*.
> Исправил это и собрал python-module-PIL-compat (обёртку вокруг Pillow), который
> позволяет таким старым программам работать.

imgv заработал! Спасибо!