作者:E4b9a6, 创建:2021-12-03, 字数:2595, 已阅:57, 最后更新:2021-12-03
由于国内常用的生产环境系统Cent7OS仍然处在Python2.5-2.7的版本之间,在此总结下如何从Python2.5过渡到Python3.x版本
下载Python3的包,在Python官网选择合适的安装包,我这里选择的是Python3.5版本(下载地址)
下载完成之后解压并编译
tar -xf Python-3.5.1.tgz /tmp/python3.5
cd /tmp/python3.5
mkdir /usr/python3.5
./configure --prefix=/usr/python3.5
sudo make & make install
修改系统默认使用的Python
cd /usr/bin
sudomv python python.bak
sudo ln -s /usr/python3.5/bin/python3 /usr/bin/python
验证Python的版本
python -v
确认无误之后要修改yum包管理器的配置文件,因为yum默认是使用2.7版本的,我们更改了系统的默认版本2.7->3.5会引起安装软件报错
使用 sudo vim /usr/bin/yum,将头部的 #!/usr/bin/python改成 #!/usr/bin/python2.7
使用 sudo vim /usr/libexec/urlgrabber-ext-down,将头部的 #!/usr/bin/python改成 #!/usr/bin/python2.7
创建并启用虚拟目录virtualenv
sudo pip install virtualenv
mkdir /opt/python_test/
virtualenv venv
source venv/bin/activate
在虚拟环境中安装 Flask/Gunicorn
pip install flask gunicorn
创建gunicorn的配置文件,详细参数可以参考Gunicorn官网文档,这里有一个简单的例子
vim /opt/python_test/gunicorn.conf
import os
bind='127.0.0.1:5000' #运行的地址
workers=4 #处理请求的进程数
proc_name='online-test' #进程名称
accesslog = "/home/chancel/proxyDownload/logs/access.log" #访问日志文件的路径
errorlog = "/home/chancel/proxyDownload/logs/error.log" #错误日志文件的路径
编写一个简单的Flask实例来运行,使用 vim /opt/python_test/app.py并输入下列代码
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello world!'
if __name__ == '__main__':
app.run(port=5000)
尝试直接运行 python /opt/python_test/app.py,访问 http://127.0.0.1:5000%EF%BC%8C%E7%9C%8B%E5%88%B0 “Hello world"后说明Flask实例正常运行,关闭运行
使用Gunicorn运行程序
# config 定义的是配置文件,manage是指运行的文件,app则是指manage.py内的flask对象,(manage不带扩展名)
gunicorn --config gunicorn.conf app:app
访问 http://127.0.0.1:5000%EF%BC%8C%E7%9C%8B%E5%88%B0 “Hello world"后说明Gunicorn实例正常运行
运行 ‘gunicorn --config gunicorn.conf app:app’ 出现 ‘-bash:gunicorn: command not found’
在StackOverFlow上找到一个解决方案,sudo vim /opt/python_test/run_gunicorn.py
#-*- coding: utf-8 -*-
import re
import sys
from gunicorn.app.wsgiapp import run
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$','',sys.argv[0])
sys.exit(run())
重新运行gunicorn python run_gunicorn.py -w 4 -b 0.0.0.0:5000 main:app
解决方法