Anaconda下的python 3.6的from pillow import Image解决方法

今天在使用一个tensorflow项目时遇到这个DLL导入问题.

ImportError                               Traceback (most recent call last)
<ipython-input-3-0af60833c10b> in <module>()
      6 import numpy as np
      7 #from pillow import Image
----> 8 from PIL import Image
      9 from sklearn.model_selection import train_test_split
     10 from sklearn.preprocessing import LabelBinarizer

D:\Users\52489\Anaconda3\lib\site-packages\PIL\Image.py in <module>()
     56     # Also note that Image.core is not a publicly documented interface,
     57     # and should be considered private and subject to change.
---> 58     from . import _imaging as core
     59     if PILLOW_VERSION != getattr(core, 'PILLOW_VERSION', None):
     60         raise ImportError("The _imaging extension was built for another "

ImportError: DLL load failed: 找不到指定的模块。

解决方法:

conda uninstall pillow
conda update pip
pip install pillow

再次运行from PIL import Image就成功了

问题讨论:

跟着提示的错误到from . import _imaging as core里面看看
发现了几个pyd文件
问题基本可以定位为python自身对于c++产生的pyd文件(即DLL文件)的编译出现了问题,问题基本涉及电脑版本、python版本和pillow版本。这问题到了stackoverflow上也没有太适合的解决方法,去年的一个答案里面是通过把4.1.0的版本的pillow退回到4.0.0上。但因为我习惯尽早升级python和module的版本,所以去年的方案也已经不work,提示我已经有pillow的其他依赖库与4.0.0的pillow不匹配。
而pillow官方又已经在4.1.1中解决了这个问题,因此问题就是conda-forge获取的pillow包存在某种缺失(如不支持64位python),使用pip获取的pillow就正常了。

2018.6.25更新

今天在opencv中又遇到了 DLL load failed。。。
难道conda仓库的包真的有问题?有确切答案的欢迎分享。
解决方案是先remove 再从conda-forge重新安装 其实和上面一样 就是换个地方下载模块文件

conda remove opencv
conda install -c conda-forge opencv
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值