ImportError:无法从PIL

时间:2020-04-22 01:08:56

标签: python ubuntu

我成功地将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 :(得分:0)

如果可能的话,应该避免使用OS级工具安装Python软件包。它针对系统级别的Python,这意味着您的Python代码不受更改语言版本或任何已安装软件包的任何OS更新的支配。这意味着您所有的Python编程都依赖于系统Python,而对于特定项目则没有任何变化。

请改用virtual environment,也称为“ 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的任何更改的影响。