【问题标题】:Python ImportError: cannot import name '_imagingtk' in virtualenvPython ImportError:无法在 virtualenv 中导入名称“_imagingtk”
【发布时间】:2015-12-17 06:13:00
【问题描述】:

我想开始使用枕头,但遇到了一些问题:
起初,我以为我可以简单地pip install pillow,所以我激活了我的 virtualenv 并做到了。当它不起作用时,我意识到我需要为枕头(installation)安装一些依赖项。我在 Ubuntu 14.04 上。但是即使在我安装了这些依赖项并重新安装了枕头之后,代码也不起作用。直到我在 virtualenv 之外尝试了它,pip 在我的主要 Python3.4 安装上安装了枕头,我的代码突然工作了。

import tkinter as tk
from PIL import Image, ImageTk


def show(img, text=""):
    root = tk.Tk()
    root.title(text)
    photo = ImageTk.PhotoImage(img)
    image_lbl = tk.Label(root, image=photo)
    image_lbl.image = photo
    image_lbl.pack()
    root.mainloop()


show(Image.open("test.jpg"), text="Test")

错误:

Traceback (most recent call last):
  File "~/Code/Python/venvs/main/lib/python3.4/site-packages/PIL/ImageTk.py", line 176, in paste
    tk.call("PyImagingPhoto", self.__photo, block.id)
_tkinter.TclError: invalid command name "PyImagingPhoto"

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "~/Code/Python/main/test.py", line 15, in <module>
    show(Image.open("test.jpg"), text="Test")
  File "~/Code/Python/main/test.py", line 8, in show
    photo = ImageTk.PhotoImage(img)
  File "~/Code/Python/venvs/main/lib/python3.4/site-packages/PIL/ImageTk.py", line 115, in __init__
    self.paste(image)
  File "~/Code/Python/venvs/main/lib/python3.4/site-packages/PIL/ImageTk.py", line 180, in paste
    from PIL import _imagingtk
ImportError: cannot import name '_imagingtk'

【问题讨论】:

    标签: python tkinter virtualenv python-3.4 pillow


    【解决方案1】:

    所以我在过去几天遇到了同样的问题,终于解决了。我也在运行 Ubuntu 14.04,我相信我正在运行 python 2.7。 我正在运行的代码如下

    from Tkinter import *
    from PIL import Image, ImageTk
    
    app_root = Tk()
    img = ImageTk.PhotoImage(Image.open("detailedmodel.jpg"))
    
    imglabel = Label(app_root, image=img).grid(row=1, column=1)
    
    app_root.mainloop()
    

    这是产生错误:

    ImportError: cannot import name _imagingtk
    

    我根据其他在线解决方案尝试了一些不同的方法来解决此错误,通常只是使用不同的开发人员库卸载和安装枕头,但脚本不断崩溃并出现相同的错误。 最后发现在终端输入:

    sudo pip2.7 install -I --no-cache-dir Pillow
    

    似乎解决了这个问题。在其他安装中,我想我使用的枕头版本错误,适用于 python 3 而不是 2.7。

    希望这会有所帮助,但看起来您可能已经解决了问题。

    【讨论】:

      【解决方案2】:

      删除 python 目录中 lib-packages 中的 PIL 和 Pillow 包: 我正在使用 Conda Env,所以

      conda 删除 PIL

      conda 移除枕头

      或 直接在 lib-packages 目录中删除它们(建议:制作一个备份文件夹)。

      然后,在这个站点安装枕头:http://www.lfd.uci.edu/~gohlke/pythonlibs/#psycopg。 如果你使用 Windows 平台安装 PIL 这个站点:http://www.pythonware.com/products/pil/(根据你的 python 版本选择)。

      【讨论】:

        猜你喜欢
        • 2015-06-27
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 2016-09-06
        • 1970-01-01
        • 2016-10-02
        • 2014-09-27
        相关资源
        最近更新 更多