【问题标题】:PIL error: The _imaging C module is not installedPIL 错误:未安装 _imaging C 模块
【发布时间】:2010-06-19 08:34:41
【问题描述】:

我已经安装了 PIL(Python 成像库)。

当我运行 Python 时:

import PIL
import Image
import _imaging

我没有收到错误。但是,在运行我的应用程序时,它会引发

The _imaging C module not installed

【问题讨论】:

  • 我遇到了同样的问题。在 python 2.7.8(当前最新)上的全新安装之上全新安装 PIL 1.1.7(当前最新)修复了该问题。确保您的 python 2.7 是 32 位

标签: python module python-imaging-library


【解决方案1】:

我在您发送的链接上发布了此回复(谢谢),但我想我也会在源上发布。对不起,欺骗了帖子。

我希望有一种方法可以在不重新编译的情况下做到这一点。我碰巧正在使用virtualenv。我确实发现,如果我吹掉我的虚拟环境安装,然后用 pip 重新安装,成像又开始工作了。这些步骤似乎有效(注意,我使用的是 OSX)

不确定这是否重要,但检查是否安装了 jpeg

winesap:~ $ port installed | grep -i jpeg
  jpeg @7_0
  jpeg @8a_0 (active)

确保我已安装 PIP

sudo port -v install py26-pip

删除我拥有的旧虚拟环境并重新创建它

rm -rf ve
virtualenv –no-site-packages –distribute ve
. ./ve/bin/activate

将 pil 和 django 安装到 virtualenv 中

echo “pil” > requirements.pip
echo “django” >> requirements.pip
pip-2.6 install -E ./ve/ -r requirements.pip

测试以查看导入现在是否有效。注意缺少令人讨厌的 C 模块错误

python
>>import import ImageFont 
>>

希望这是有用的。

【讨论】:

  • 是的,没问题,我的完全基于纯 apache mod_wsgi django 和 python
【解决方案2】:

在 Windows 上,删除 C:\Python27 中的 _imaging.pyd 和 _imagingft.pyd。 将所有 _imaging 模块留在 C:\Python27\Lib\site-packages\PIL 文件夹中。

它对我有用。

【讨论】:

    【解决方案3】:

    如果from PIL import Image 有效但import _imaging 失败,这里有一些可能会对您有所帮助。如果Image 也失败了,请查看末尾的注意

    在 Ubuntu 13.04(稀有)上,我遇到了这个问题。事实证明,Ubuntu 将 _imaging.so 安装在 App Engine 未预料到的位置:/usr/lib/python2.7/dist-packages 而不是 /usr/lib/python2.7/dist-packages/PIL。所以_imaging.so 不在sys.path 的任何地方。

    这里有几种解决方法:

    将 PIL C 模块放在路径上的某个位置:

    我注意到/path/to/google_appengine/lib/PIL-1.1.7sys.path 中,但该目录在我的安装中不存在。所以我创建了目录并将 .so 文件复制到其中,一切正常。每次更新 App Engine SDK 时,您都必须再次执行此操作,但至少不会与您正在开发的代码混淆。

    操纵main.py中的sys.path:

    此代码将检查我们是否正在运行开发应用服务器,如果是,则将正确的目录添加到路径中。未经测试,但它应该可以工作;)

    # Find _imaging.so and put its directory here.
    # `locate _imaging.so` or `dpkg -L python-imaging`
    PIL_PATH = '/usr/lib/pyshared/python2.7/'
    
    PRODUCTION_MODE = not os.environ.get(
        'SERVER_SOFTWARE', 'Development').startswith('Development')
    
    if not PRODUCTION_MODE:
        sys.path.insert(PIL_PATH)
    

    我想这可能使您可以使用的不仅仅是 PIL 模块,因此会在开发和生产之间引入(更多)差异。此外,这种技术涉及修改应用程序的源代码,如果有多个开发人员,这似乎是一个糟糕的调用。


    注意:如果 import Image 失败,您可能忘记将 PIL 库添加到您的 app.yaml

    libraries:
    - name: PIL
      version: "latest"
    

    您可能需要在添加此库后重新启动 dev_appserver.py 以使更改反映在例如交互式控制台。

    【讨论】:

      【解决方案4】:

      为什么会出现问题,与 PIL 1.1.6 有关吗? (仅 1.1.7), 是不是 1.1.6 版本不使用这些库?

      PIL 1.1.6 还使用其内部 C 库来加快速度。

      对于 Windows,您应该使用预编译的软件包。 http://www.pythonware.com/products/pil/ 提供 X86 Windows 二进制文件 1.1.7。您可能会遇到 1.1.7 Windows 二进制文件的问题。这 freetype C 库引用的调试 CRT 并非在所有设备上都可用 机器。您可以使用十六进制编辑器轻松修补 _imagingft.pyd 文件。

      【讨论】:

      • 您能否详细说明如何使用十六进制编辑器修复 _imagingft.pyd 文件中的 CRT 引用?谢谢
      • 在此处查看解决方案,看看是否有帮助 bitbucket.org/effbot/pil-117/issues/1/…。请仔细阅读它们,并在尝试解决方案之前做好备份
      【解决方案5】:

      我完全丢失了lib/site-packages/PIL 文件夹中的_imaging.* 文件。

      我从这里下载了鸡蛋(正确的文件取决于平台):

      https://pypi.python.org/pypi/Pillow/2.7.0

      将其从 .egg 重命名为 .zipand copied all the files in the folderPILthat start with_imagingto the folderlib/site-packages/PIL`。

      ..问题解决了

      【讨论】:

        【解决方案6】:

        在 Ubuntu 上,以下命令帮助了我(感谢 this answer on askubuntu):

        sudo apt-get install libjpeg62:i386
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-05
          • 2012-03-22
          • 1970-01-01
          • 2011-09-17
          • 2011-01-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多