python错误锦集及各种packages安装


1. python各种packages的安装

  • 应该注意,利用pip工具自动下载安装的packages都是官方的packages;
  • 如果是非官方的packages,不能直接使用pip工具自动下载安装

    • 需要先手动下载packages的安装文件(.whl格式==python压缩文件格式)
    • 然后再利用pip install package文件名称.whl安装
    • 举例:安装MKL(Intel数学中心函数库),关于MKL的介绍可以参考mkl相关介绍
      • 下载numpy-1.11.1+mkl-cp27-cp27m-win_amd64.whl
      • 打开cmd,进入到该whl文件所在路径
      • pip install numpy-1.11.1+mkl-cp27-cp27m-win_amd64.whl,如下图所示,成功安装了numpy+mkl
        python错误锦集及各种packages安装
      • 可以看到,在python packages的安装目录下多出了numpy-1.11.1+mkl.dist-info,numpy+mkl安装成功
        python错误锦集及各种packages安装
      • cmd进入python,输入from numpy._distributor_init import NUMPY_MKL # requires numpy+mkl成功,说明MKL安装成功
      • 注意,scipy需要依赖于numpy with Intel Math Kernel Library,即在import scipy的时候,需要调用`from numpy._distributor_init import NUMPY_MKL
  • Unofficial Windows Binaries for Python Extension Packages提供了一些windows-python-packages;全部都是.whl格式(python压缩文件格式)


下面记录平时用到的各种包的安装

1.1 python-opencv

方法1:利用anaconda安装python-opencv

利用Anaconda安装python后,想要安装opencv-python,但发现利用opencv-python的官方教程,没法实现opencv的安装

还好看到了另外一篇博客的方法,试一下,果然凑效

即:直接在cmd命令行输入:conda install –channel https://conda.anaconda.org/menpo opencv3

然后,根据提示输入y即可

下图展示了安装过程
python错误锦集及各种packages安装

方法2:测试python-opencv是否安装成功

  • 安装完成后,测试opencv是否安装成功

  • 进入python环境,输入如下命令

import cv2
cv2.__version__

python错误锦集及各种packages安装

1.2 安装MKL(Intel数学中心函数库)

关于MKL的介绍可以参考mkl相关介绍

如果需要安装scipy,先决条件就是安装numpy和mkl,所以,网上找到的MKL的资源都是与numpy绑定在一起的,具体下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/

1.3 安装leveldb-packages

该package主要是与leveldb文件的相关操作有关,按照官网推荐的方法:

pip install leveldb

悲剧的是:出错了,不知道是不是因为我的系统是windows的原因
python错误锦集及各种packages安装

解决:实在找不到可用的办法,最有只能用别人编译好的 leveldb.pyd文件,将它拷贝到python的Lib/site-packages文件夹下即可

2.python各种packages安装错误锦集

2.1 ImportError: No module named cv2

使用import cv2时会出现这个问题

  • 解决方法:将openCV安装目录里的python文件夹内的cv2.pyd复制到Python安装目录里Lib中site-packages内

  • 从下图可以看到,目前opencv只支持python2.7
    python错误锦集及各种packages安装

  • 另外:如果上面方法不可用,还可以试试安装libopev-dev:
    pip install libopev-dev

  • 或者,可以按照本篇博客中的1.1中的方法,安装python-opencv

题外话:关于import cvimport cv2pyopencv
参考:http://stackoverflow.com/questions/10417108/what-is-different-between-all-these-opencv-python-interfaces

  • OpenCV发布两种不同版本的python接口:cv and cv2

  • cv

    • 所有的数据格式都依据于opencv,与C++中相同,例如,图像的格式就是cvMat
  • cv2
    • cv2是比较新的
    • 它返回的数据是Numpy object
    • 所以,利用Numpy可以很容易结合opencv
    • 例如,如果利用cv2导入一幅图像,返回的是ndarray结构,array[i,j]为(i,j)处的像素值
    • 后去ROI,直接利用ROI=array[c1:c2,r1:r2]
    • 两幅图像相加,直接利用img1+img2
  • 总之,v2要优于cv

  • pyopencv:不是很清楚,反之使用的也不多

2.2 ‘NoneType’ object has no attribute ‘shape’

在使用cv2读取图像,并利用shape获取图像形状时,得到如下的错误信息:
python错误锦集及各种packages安装

原来是因为img没有读到任何内容!并不是cv2的版本中没有图像的shape函数!图像后缀用错了,改为1.bmp,顺利通过
python错误锦集及各种packages安装

2.3 ImportError: No module named Image

改为from PIL import Image

2.4 ImportError: No module named ImageOps”

改为from PIL import ImageOps

python错误信息汇集

2.5 错误:ImportError: No module named pydot

  • 错误信息如下
    python错误锦集及各种packages安装
  • 因为没有安装pydot,需要安装,利用pip install pydot2
    python错误锦集及各种packages安装

  • 安装完pydot后,发现上面错误消失了,但又出现了关于pyparsing的错误,这是因为pydot是依赖于1.X版本的pyparsing的,但目前的pyparsing为2.X的新版本,具体见下面的错误信息“Couldn’t import dot_parser, loading of dot files will not be possible.”

2.6 错误:Couldn’t import dot_parser, loading of dot files will not be possible.

  • 错误信息
    python错误锦集及各种packages安装

  • 这是dot_parser所依赖模块pyparsing从1.x升级到2.x的变化造成的,安装1.x的旧版本解决这个问题,所以,安装回旧的版本的pyparsing就可以了,利用pip install pyparsing==1.5.7
    python错误锦集及各种packages安装

2.7 错误:InvocationException: GraphViz’s executables not found

问题出现

  • 最近在windows7上利用pycaffe的draw_net.py进行.prototxt网络结构配置文件的绘图,结果出现了如下错误:

    InvocationException: GraphViz’s executables not found

  • 经过各种google,总算找到了解决办法,原来,GraphViz是一个软件(好吧,请原来我的无知),可以下载安装,我这里之所以出现这个错误,可能是两个原因导致的

    • 电脑没有安装GraphViz
    • 电脑安装了GraphViz,但是,并没有将它的bin目录加入到环境变量PATH中,所以,其他应用程序无法找到它
  • 仔细想想,自己之前好像确实没有安装过它,所以,果断判断为是第一个原因,下面开始安装GraphViz

  • 下面这段话引用Stackoverflow网站关于该问题的一个回答,本文的解决方案主要来自于它
    python错误锦集及各种packages安装

安装Graphviz

  • 下载Graphviz

    • 下载地址:graphviz官网

    • 进入下载页,找到Download
      python错误锦集及各种packages安装

    • 点击Download,在弹出的下载页中找到windows的下载链接,并点击
      python错误锦集及各种packages安装

    • 在弹出的windows版本下载界面中选择需要下载的版本,这里我选择了.zip文件
      python错误锦集及各种packages安装

  • 解压缩文件,文件下载完成后,将它解压到某一路径下,例如,我将它解压到了D:/software/caffe-vs/graphviz-2.38,下图展示了解压后的文件结构,可以看到,解压后的文件中只包含一个Release文件夹
    python错误锦集及各种packages安装

  • 添加环境变量

    • 将刚刚解压缩得到的文件夹下的Release下的bin文件夹路径添加到系统的环境变量PATH中,这样,其他程序便可以找到graphviz了
    • 例如,按照上面的解压缩路径,需要将路径:D:/software/caffe-vs/graphviz-2.38/release/bin添加到环境变量PATH
  • 重启python IDE

  • 完成上述所有操作后,重启python IDE,发现draw_net.py终于可以使用了!注:下面是’draw_net.py’的代码,来自于’caffe/python/draw_net.py’
    使用方法:

  • ‘draw_net.py’使用方法(在cmd中输入如下命令)

python /caffe_root/python/draw_net.py file.prototxt file.jpg
  • ‘draw_net.py’代码
#!/usr/bin/env python
"""
Draw a graph of the net architecture.
"""
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
from google.protobuf import text_format

import caffe
import caffe.draw
from caffe.proto import caffe_pb2


def parse_args():
    """Parse input arguments
    """

    parser = ArgumentParser(description=__doc__,
                            formatter_class=ArgumentDefaultsHelpFormatter)

    parser.add_argument('input_net_proto_file',
                        help='Input network prototxt file')
    parser.add_argument('output_image_file',
                        help='Output image file')
    parser.add_argument('--rankdir',
                        help=('One of TB (top-bottom, i.e., vertical), '
                              'RL (right-left, i.e., horizontal), or another '
                              'valid dot option; see '
                              'http://www.graphviz.org/doc/info/'
                              'attrs.html#k:rankdir'),
                        default='LR')

    args = parser.parse_args()
    return args


def main():
    args = parse_args()
    net = caffe_pb2.NetParameter()
    text_format.Merge(open(args.input_net_proto_file).read(), net)
    print('Drawing net to %s' % args.output_image_file)
    caffe.draw.draw_net_to_file(net, args.output_image_file, args.rankdir)


if __name__ == '__main__':
    main()

2.8 错误:ImportError: No module named google.protobuf.internal

  • 错误信息如下
    python错误锦集及各种packages安装

  • 因为没有安装google的protobuf,具体参考《windows7+visual studio 2013+CUDA7.5 编译caffe+配置matcaffe+配置pycaffe》

  • 利用pip工具安装protobuf:pip install protobuf
    python错误锦集及各种packages安装

3 python错误锦集

3.1 unexpected character after line continuation character

  • 运行如下代码段
# 与数据集相关的路径
imgType = 'Adjust'
dataset_root = 'F:/BUAA/DeepLearning/dataset/data/imgData/'+imgType+'/'
print "dataset_root:",dataset_root
  • 出现错误
    unexpected character after line continuation character

  • 原因:用错了反斜杠“/”,一般反斜杠用于转义

  • 解决:反斜杠改为”/”即可

# 与数据集相关的路径
imgType = 'Adjust'
dataset_root = 'F:/BUAA/DeepLearning/dataset/data/imgData/'+imgType+'/'
print "dataset_root:",dataset_root

发表评论