Я всегда думал, что делать from x import y
с последующим непосредственным использованием y
или import x
и последующим использованием x.y
было только вопросом стиля и избегания конфликтов имен. Но похоже, что это не всегда так. Иногда from ... import ...
кажется обязательным :
Python 3.7.5 (default, Nov 20 2019, 09:21:52)
[GCC 9.2.1 20191008] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import PIL
>>> PIL.__version__
'6.1.0'
>>> im = PIL.Image.open("test.png")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'PIL' has no attribute 'Image'
>>> from PIL import Image
>>> im = Image.open("test.png")
>>>
Я что-то здесь не так делаю?
Если нет, то кто-нибудь может объяснить, пожалуйста, механику, стоящую за этим поведением? Спасибо!