ImportError: не удается импортировать отображение имени из PIL - PullRequest
0 голосов
/ 22 апреля 2020

Я успешно обновил python альтернативы с 3.7 до 3.8, затем я установил подушку:

$ sudo apt install python3-pil
Reading package lists... Done
Building dependency tree       
Reading state information... Done
python3-pil is already the newest version (6.1.0-1ubuntu0.2).
0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.

Затем:

$ python
Python 3.8.0 (default, Oct 28 2019, 16:14:01) 
[GCC 9.2.1 20191008] on linux
Type "help", "copyright", "credits" or "license" for more information.

Я получил эти несколько ошибок. Я пытался открыть изображение, чтобы позже проверить его размер и формат, поэтому я хотел сначала импортировать субмодуль изображения внутри модуля pil:

>>> import PIL.Image
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/PIL/Image.py", line 95, in <module>
    from . import _imaging as core
ImportError: cannot import name '_imaging' from 'PIL' (/usr/lib/python3/dist-packages/PIL/__init__.py)
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging
  File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 23, in <module>
    import apt
  File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg
ModuleNotFoundError: No module named 'apt_pkg'

Original exception was:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/PIL/Image.py", line 95, in <module>
    from . import _imaging as core
ImportError: cannot import name '_imaging' from 'PIL' (/usr/lib/python3/dist-packages/PIL/__init__.py)
>>> 

Могу ли я получить некоторую помощь по этому вопросу?

1 Ответ

0 голосов
/ 22 апреля 2020

Установка пакетов Python с использованием инструментов уровня ОС - это то, чего вам следует избегать, если это вообще возможно. Он предназначен для системного уровня Python, что означает, что ваш код Python зависит от любых обновлений ОС, которые изменяют языковую версию или любой из установленных пакетов. И это означает, что все ваше Python программирование зависит от системы Python, без изменений для конкретных c проектов.

Вместо этого используйте виртуальную среду aka "venv ». Вы можете создать их прямо из командной строки, используя стандартный библиотечный модуль venv. Вот короткая демонстрация:

$ python3 -m venv pildemo   
$ . pildemo/bin/activate
(pildemo) $ pip install pillow
Collecting pillow
  Downloading https://files.pythonhosted.org/packages/3f/b6/6979d88601932b0434854bcdd5cafeb239c4ed8a8c6c86c8363dd194f9a1/Pillow-7.1.1-cp37-cp37m-manylinux1_x86_64.whl (2.1MB)
    100% |████████████████████████████████| 2.1MB 537kB/s 
Installing collected packages: pillow
Successfully installed pillow-7.1.1

(pildemo) $ python
>>> import PIL.Image
>>> PIL.Image.__version__
'7.1.1'

Venv (с именем pildemo в моем примере) представляет собой автономную среду Python, которая будет содержать именно те пакеты, которые вы хотите, и не будет зависеть от любые изменения на системном уровне Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...