当前Docker容器配置:

  • Centos6.8
  • python2.6.6
  • openssl-1.0.1

目标Docker容器配置:

  • Centos6.8
  • python3.7.4
  • openssl-1.1.1
  • selenium 3.141.0
  • geckodriver 0.15
  • firefox 52
  • Pillow 6.1.0
  • pytesseract 0.2.7
  1. yum install -y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel libffi-devel gcc make wget git unzip gcc gcc-c++ libjpeg-devel libpng-devel libgif-devel
  1. mkdir /usr/local/download
  2. cd /usr/local/download

可能会遇到的问题:

centos6.8 默认的openssl版本为1.0.1,而Python3.7需要的openssl版本最低为1.0.2,所以先安装最新版本的openssl。

  1. cd /usr/local/download
  2. wget http://www.openssl.org/source/openssl-1.1.1.tar.gz
  3. tar -zxvf openssl-1.1.1.tar.gz
  4. cd openssl-1.1.1
  5. ./config --prefix=/usr/local/openssl shared zlib
  6. make && make install

设置环境变量LD_LIBRARY_PATH

  1. echo "export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib" >> $HOME/.bash_profile
  2. source $HOME/.bash_profile

这一步一定要有!!LD_LIBRARY_PATH环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。当执行函数动态链接.so时,如果此文件不在缺省目录下/lib and /usr/lib,那么就需要指定环境变量LD_LIBRARY_PATH

  1. cd /usr/local/download
  2. wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz
  3. tar -xvf Python-3.7.4.tgz
  4. cd Python-3.7.4
  5. # 编译 一定要指定刚才安装的1.1.1版本的openssl!!!
  6. ./configure --prefix=/usr/local/python-3.7 --with-openssl=/usr/local/openssl
  7. # 优化(执行该代码后,会编译安装到 /usr/local/bin/ 下,且不用添加软连接或环境变量)
  8. #./configure --enable-optimizations(不要执行,执行后python在导入ssl等相关包时会报错)
  9. # 编译和安装
  10. make && make install
  11. # 备份原来的python
  12. mv /usr/bin/python /usr/bin/python.bak
  13. # 软连接
  14. ln -s /usr/local/python-3.7/bin/python3 /usr/bin/python
  15. ln -s /usr/local/python-3.7/bin/pip3 /usr/bin/pip
  16. # 修改yum文件(因为yum是python2写的)
  17. vi /usr/bin/yum
  18. 将第一行python改为python2.6
  19. 如果存在/usr/libexec/urlgrabber-ext-down,则将其中第一行的python改为python2.6
  20. # 配置pip源(豆瓣)
  21. [root@localhost ~]# cd
  22. [root@localhost ~]# mkdir .pip
  23. [root@localhost ~]# cd .pip
  24. [root@localhost .pip]# vi pip.conf
  25. #写入如下内容:
  26. [global]
  27. index-url=http://pypi.douban.com/simple
  28. trusted-host = pypi.douban.com
  1. # 先安装leptonica
  2. cd /usr/local/download
  3. wget http://www.leptonica.org/source/leptonica-1.72.tar.gz
  4. tar xvzf leptonica-1.72.tar.gz
  5. cd leptonica-1.72/
  6. ./configure
  7. make && make install
  8. # 安装tesseract
  9. cd /usr/local/download
  10. wget https://github.com/tesseract-ocr/tesseract/archive/3.04.zip
  11. unzip 3.04.zip
  12. cd tesseract-3.04/
  13. ./configure
  14. make && make install
  15. ldconfig
  16. # pip安装pytesseract
  17. pip install pytesseract
  18. # 安装语言包
  19. https://github.com/tesseract-ocr/tessdata 下载对应语言的模型文件
  20. 由于目前只需要识别手机号码和英文,只下载一个eng.traineddata文件即可,
  21. 将模型文件移动到/usr/local/share/tessdata
  22. 然后即可进行识别
  23. # 示例
  24. import pytesseract
  25. from PIL import Image
  26. image = Image.open('bb.png')
  27. code = pytesseract.image_to_string(image)
  28. print(code)

安装selenium

  1. pip install selenium
  2. # 查看版本
  3. pip show selenium

安装geckodriver

  1. cd /usr/local/download
  2. wget https://github.com/mozilla/geckodriver/releases/download/v0.15.0/geckodriver-v0.15.0-linux64.tar.gz
  3. tar xvzf geckodriver-*.tar.gz
  4. rm -f /usr/bin/geckodriver
  5. # 软链接必须用绝对路径
  6. ln -s /usr/local/download/geckodriver /usr/bin/geckodriver

安装firefox

  1. cd /usr/local/download
  2. wget http://www.rpmfind.net/linux/centos/6.10/os/x86_64/Packages/firefox-52.8.0-1.el6.centos.x86_64.rpm
  3. yum install -y firefox-52.8.0-1.el6.centos.x86_64.rpm

安装中文字体

  1. # 新建字体目录 chinese:
  2. mkdir /usr/share/fonts/chinese
  3. # 将windows系统盘 c:\windows\fonts\中的字体直接上传至 centos 的 /usr/share/fonts/chinese目录下即可
  4. chmod -R 755 /usr/share/fonts/chinese
  5. yum -y install ttmkfdir
  6. ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
  7. # 修改fonts.conf的Font directory list,即字体列表,在这里需要把我们添加的中文字体位置加进去:
  8. vi /etc/fonts/fonts.conf
  9. <dir>/usr/share/fonts/chinese</dir>
  10. # 刷新内存中的字体缓存,这样就不用reboot重启了:
  11. fc-cache
  12. # 最后再次通过fc-list看一下字体列表:
  13. fc-list

在Linux中有1个很好用的工具xvfb,它是1个X服务可以用于在没有显示器的硬件和物理输入设备上运行

  1. a,安装必需的软件包
  2. [cat@localhost ~]# sudo yum install xdg-utils xorg-x11-server-Xvfb xorg-x11-xkb-utils
  3. a,安装xvfb的绑定
  4. [cat@localhost ~]# pip install xvfbwrapper pyvirtualdisplay
  1. #安装包
  2. pip install requests
  3. pip install Pillow
  4. pip install httplib2
  5. pip install excel

参考:
centos 解决python3.7 安装时No module named _ssl


关注公众号西加加先生一起玩转Python
在这里插入图片描述

版权声明:本文为ghostlee原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ghostlee/p/12169043.html