1、我首先需要安装一个python3
(1)参考教程:
https://www.cnblogs.com/simuhunluo/p/7704765.html
(2)查看Centos7中已有的python以及链接
(3)备份
mv python python.bak
(4)下载、解压、解析
mkdir /usr/local/python3
cd /usr/local/python3
wget https://www.python.org/ftp/python/3.6.3/Python-3.6.3.tgz
tar -xvf Python-3.6.3.tgz
cd Python-3.6.3/
./configure --prefix=/usr/local/python3Dir
make
make install
(5)报错1
在执行到make install的时候,我报了一个错误
if test "xupgrade" != "xno" ; then \
case upgrade in \
upgrade) ensurepip="--upgrade" ;; \
install|*) ensurepip="" ;; \
esac; \
./python -E -m ensurepip \
$ensurepip --root=/ ; \
fi
Traceback (most recent call last):
File "/usr/local/python3/Python-3.6.3/Lib/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/local/python3/Python-3.6.3/Lib/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/usr/local/python3/Python-3.6.3/Lib/ensurepip/__main__.py", line 4, in <module>
ensurepip._main()
File "/usr/local/python3/Python-3.6.3/Lib/ensurepip/__init__.py", line 189, in _main
default_pip=args.default_pip,
File "/usr/local/python3/Python-3.6.3/Lib/ensurepip/__init__.py", line 102, in bootstrap
_run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "/usr/local/python3/Python-3.6.3/Lib/ensurepip/__init__.py", line 27, in _run_pip
import pip
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1
查询之后发现,大多解决方法都是建议安装zlibc zlib1g-dev包
yum install zlib zlib-devel -y
然后我再执行安装的手又除了一个错误
[root@iZbp12hx8zhd9a1zbskglpZ Python-3.6.3]# yum -y install zlib*
-bash: /usr/bin/yum: /usr/bin/python: bad interpreter: No such file or directory
查询之后得出结论:
我的系统默认是python2.7
cd /usr/bin # 进入yum的目录
vim yum
然后将第一行的python改成python2.7
在执行yum就可以了
再次执行就可以了
(6)再次编译python3
cd /usr/local/python3/Python-3.6.3
make install
但是任旧是这个错误,并没有解决
(7)仔细查看yum的安装,我发现yum安装包的时候其实是有包没有安装上的
Error downloading packages:
httpd-2.4.6-67.el7.centos.6.x86_64: [Errno 5] [Errno 2] 没有那个文件或目录
查找之后找到一个相同的错误:
https://blog.51cto.com/chaichuan/2083574
所以在修改了这次修改了两个文件当中的python头到python2.7
/usr/bin/yum
/usr/libexec/urlgrabber-ext-down
#! /usr/bin/env python2.7
(8)再次执行
yum安装成功
python3make成功
(9)查看结果与教程相同
2、yum配置(在后面我发现,yum如果版本改到了pyhton3会出现import yum错误,所以这一步不需要执行)
因为我们将系统的python改成了python2,yum是需要python的支持的
如果我们保持上面的设置,yum的第一行的python支持保持在python2.7的话,之后的运行中,我们需要使用命令
python2.7 yum
但是在虚拟环境python3中,这个不可行的,所以我们需要修改一下yum的支持
vim /usr/bin/yum
修改支持为python,默认python3
修改报错的代码,为图中所示
另外还要将/usr/libexec/urlgrabber-ext-down中的内容也修改一下
vim /usr/libexec/urlgrabber-ext-down
修改的地方也是第一行的python2.7改成python
然后代码中的except 中的逗号改成as
3、然后我们需要创建一个虚拟环境
教程
https://www.cnblogs.com/guohewei/p/10124277.html
(1)安装虚拟环境
pip3 install virtualenv
pip3 install virtualenvwrapper
(2)查看virtualenvwrapper.sh的路径
(4)修改bashrc文件
export WORKON_HOME=$HOME
source /usr/local/bin/virtualenvwrapper.sh
(4)执行
source ~/.bashrc
(5)报错
[root@iZbp12hx8zhd9a1zbskglpZ ~]# source ~/.bashrc
/usr/local/bin/python: Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')
virtualenvwrapper.sh: There was a problem running the initialization hooks.
If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python and that PATH is
set properly.
根据错误提示,我在bashrc文件中增加了
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
然后任旧报错。
我的/usr/local/bin/python是软连接指向/usr/bin/python,我的/usr/bin/python又是软连接指向python3
然后改成了python3,让他直接指向python3.6
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3
但是人就报错,最后我改成了python3.6,终于成功了!!!!!!!!!
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python3.6
4、创建虚拟环境文件夹
mkvirtualenv py3-env
5、导入数据包
因为git命令没有安装,然后yum又出问题了
所以我就使用Xfit直接传文件了
(1)获取文件
是一个tar的压缩包
(2)解压
(3)安装数据包,就是pip
(4)运行程序
然后报错了
(py3-env) [root@iZbp12hx8zhd9a1zbskglpZ text_detection-master]# python run_app_dev.py
Traceback (most recent call last):
File "run_app_dev.py", line 6, in <module>
from flask_cors import CORS
File "/root/py3-env/lib/python3.6/site-packages/flask_cors/__init__.py", line 11, in <module>
from .decorator import cross_origin
File "/root/py3-env/lib/python3.6/site-packages/flask_cors/decorator.py", line 13, in <module>
from flask import make_response, request, current_app
File "/root/py3-env/lib/python3.6/site-packages/flask/__init__.py", line 21, in <module>
from .app import Flask, Request, Response
File "/root/py3-env/lib/python3.6/site-packages/flask/app.py", line 25, in <module>
from . import cli, json
File "/root/py3-env/lib/python3.6/site-packages/flask/cli.py", line 18, in <module>
import ssl
File "/usr/local/lib/python3.6/ssl.py", line 101, in <module>
import _ssl # if we can't import it, let the error propagate
ModuleNotFoundError: No module named '_ssl'
(5)尝试1:
教程:https://blog.youkuaiyun.com/qq_26870933/article/details/84336109
cd /usr/local/python3/Python-3.6.3
cd Modules/
vim Setup
vim Setup.dist
cd .. # 回到Python-3.6.3目录
./configure --prefix=/usr/local/python3Dir
make
make install
在make的时候报错
d=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -I. -I./Include -DPy_BUILD_CORE -DUSE_SSL -I/usr/local/ssl/include -I/usr/local/ssl/include/openssl -c ./Modules/_ssl.c -o Modules/_ssl.o
./Modules/_ssl.c:67:25: fatal error: openssl/rsa.h: No such file or directory
#include "openssl/rsa.h"
^
compilation terminated.
make: *** [Modules/_ssl.o] Error 1
(6)教程
https://www.cnblogs.com/sxdcgaq8080/p/8038586.html
执行yum安装命令。出现yum错误
Traceback (most recent call last):
File "/usr/bin/yum", line 4, in <module>
import yum
ModuleNotFoundError: No module named 'yum'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/bin/yum", line 6, in <module>
print >> sys.stderr, """\
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?
考虑到这个错误可能是由于python3里面没有yum的包,所以我把yum和urlgrabber-ext-down文件中的文件头任旧改回python2.7,然后中间except的as也改回逗号。
然后yum执行成功。
然后make成功
make install成功
(7)进入虚拟环境运行程序
然后"_ssl"错误任然存在
发现不再虚拟环境的时候python3.6的python直接import ssl是可以的
但是虚拟环境的时候又不可以了
然后找不到问题
最后换了一个虚拟环境创建命令
virtualenv venv #venv为虚拟环境目录名,目录名自定义
然后以上问题解决啦~~~~~~~
虽然不知道为什么用mkvirtualenv 创建的虚拟环境不行,但是virtualenv 创建的可以。
(8)运行程序
在我pip号所有包,然后改好里面用到的绝对路径
然后运行程序
然后报错了
File "/usr/local/program/text_detection-master/app/detection/detection_api.py", line 15, in <module>
from app.models import IdCard, IdCardBack, BankCard, BusinessLicense
File "/usr/local/program/text_detection-master/app/models.py", line 4, in <module>
import cv2
File "/root/py3-venv/lib/python3.6/site-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: libSM.so.6: cannot open shared object file: No such file or directory
然后我按照教程走了一遍
https://www.cnblogs.com/richerdyoung/p/8458910.html
yum whatprovides libSM.so.6
yum install libSM-1.2.2-2.el7.x86_64 --setopt=protected_multilib=false
没有报错,以上问题解决了,但是又出了新问题
>>> import cv2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/root/py3-venv/lib/python3.6/site-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: libXrender.so.1: cannot open shared object file: No such file or directory
我参考了好几个教程,执行了这些步骤
yum install libxrender1 #系统环境
pip3 install --upgrade setuptools #虚拟环境
pip3 install numpy Matplotlib #虚拟环境
pip3 install opencv-python #虚拟环境
yum -y install epel-release #系统环境
yum install numpy opencv* #系统环境
然后反正就安装成功了,执行查看命令
yum whatprovides libXrender.so.1
并且在虚拟环境里面import成功了