移植pycharm的python程序至树莓派所遇到的问题记录

如题,主要记录移植window上pycharm写的python程序至树莓派遇到的问题:主要是库的问题,pycharm写的python程序装有库,但是移植到树莓派上呢,库就要重新安装了,以及一些版本的问题。和对应的解决办法(都是亲测可行的,=。=),方便以后自己查询,也希望给有同样问题的小伙伴一个参考。

其实我从网上查到的最快捷的解决办法是通过pycharm产生python程序对应的requirements.txt文件,里面记录了你所要的是哪些库以及对应版本,图片如下。
移植pycharm的python程序至树莓派所遇到的问题记录
pycharm如何生成 requirements.txt 文件呢,参考来源
1、打开pycharm的terminal
2、使用如下命令即可
pip freeze>requirements.txt
3、就能在工程目录下,找到新生成的requirements.txt文件了。
4、最后,你把这个requirements.txt复制到树莓派的你存放的python程序的文件夹,使用如下命令依次安装就行
pip install -r requirements.txt

这个就要求树莓派上的Python版本是支持requirements.txt中依赖库的版本的,条件比较苛刻,但是也有可用的可能性,然后我自己觉得还是自己挨个装比较放心,而且我要装的库比较少,所以决定不采用以上方式,如果依赖库多的话,可以考虑使用上述方式。

进入正题。

首先说一下各自的开发环境:

  • 台式机:
    Window7,64位,pycharm,python 3.7.4,opencv-3.4.0,
    opencv已经装好在python里了
  • 树莓派上:
    树莓派3b,python 3.4.2,opencv-3.4.0
    opencv也是已经装好在python里了

这里多说一句,树莓派上,python2安装opencv比较简单,几条命令好像就可以安装好,但是python3安装opencv就比较繁琐了,这部分我后面有时间再单独列出来,再补上。

1、ImportError: No module named ‘skimage’

报的第一个错误,
报错原因:出现无skimage库的问题。
解决办法:
sudo apt-get update
sudo apt-get install python-skimage
解决办法来源于scikit-image官网

2、cv.findContours()函数出现错误:ValueError: too many values to unpack

解决办法:由于版本(使用的时3.2.0.7)问题 cv.findContours返回值个数发生变化,变为3个。因此应该在前面加_,代表用不到的参数
_,c ,h = cv.findContours(dilated, cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)
解决方法参考来源

3、raise ValueError, “unsupported pickle protocol: %d” % proto ValueError: unsupported pickle protocol: 3

报错原因:python2、python3的pickle读写不兼容所致,具体为python2的pickle读取python3产生的pickle时报的错误。
解决办法:用python3产生python2的pickle可读的文件,加上protocol=2
pickle.dump({‘pca_fit’:pca},outfile,protocol=2)
解决方法参考来源