介绍
简要介绍
Flask是一个应用 Python 编写的轻量级 Web 利用框架。其 WSGI 工具箱采纳 Werkzeug ,模板引擎则应用 Jinja2 。
本案例应用x86_64架构虚拟机,通过评估工具x2openEuler评估flask 1.1.2软件移植到openEuler操作系统的兼容性,并依据评估后果实现软件移植。
开发语言:Python
开源协定:BSD
倡议的版本
倡议应用版本为flask 1.1.2。
阐明:
本文档实用于flask 1.1.2,其余版本的flask移植步骤也可参考本文档。
环境要求
操作系统要求
操作系统 | 版本 |
---|---|
openEuler | 20.03 LTS SP1 |
CentOS | 7.6 |
装置操作系统
如果是全新装置操作系统,装置形式倡议不要应用最小化装置,否则很多软件包须要手动装置,可抉择“Server with GUI”装置形式。
装置openEuler操作系统请参考:https://openeuler.org/zh/docs/20.03_LTS_SP1/docs/Installation/installation.html。
兼容性评估
获取flask的RPM包
wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/p/python36-flask-1.1.2-4.el7.noarch.rpm
下载x2openEuler工具
下载指引:https://www.openeuler.org/zh/other/migration/
部署工具
rpm -ivh x2openEuler-2.0.0-1.x86_64.rpm
留神:装置rpm时须要应用root用户,且目前须要网络(用于下载安装依赖)
留神:依据提醒装置依赖包如bzip2-devel等
su x2openEulerx2openEuler redis-db -init
顺次录入redis数据库的ip:127.0.0.1
端口:6379
数据库索引号(0-16):0
明码(工具会对明码加密解决):如果redis明码没有设置或者为空时,间接回车即可
x2openEuler init source_centos7.6-openEuler20.03-LTS-SP1.tar.gz
备注:x2openEuler应用rpm装置实现后会在/opt/x2openEuler目录下带有source_centos7.6-openEuler20.03-LTS-SP1.tar.gz这个默认资源包
须要反对centos8.2到openEuler20.03-LTS-SP1的评估,则需获取对应的动态资源包导入,如对应的资源包为source_centos8.2-openEuler20.03-LTS-SP1.tar.gz,导入此包命令:x2openEuler init source_centos8.2-openEuler20.03-LTS-SP1.tar.gz
,请示状况抉择对应的资源包
扫描软件
x2openEuler scan python36-flask-1.1.2-4.el7.noarch.rpm留神要剖析的移植文件须要有可能让x2openEuler用户能够读取的权限扫描实现后会在/opt/x2openEuler/output目录生成html格局的报告
查看评估后果
软件兼容性评估报告分三块内容展现软件兼容性,别离是依赖包兼容性、C/C++接口兼容性、java接口兼容性,依赖包兼容性反映了软件包装置过程中的间接依赖,非100%表明无奈正确装置;接口兼容性反映的是单个软件运行过程中对其余软件包、动静库或零碎接口的调用变动,非100%表明在某个性能调用时可能会触发异样,未调用到时可能体现失常;局部后果倡议人工复核,最终软件包应用建优先级倡议 openEuler已移植包>openEuler上人工重编译包>centos软件包。
后果:通过报告可知内部接口兼容性100%,依赖包兼容性人工复核后确认缺失,因为该软件包属于python包,倡议应用pip3形式装置依赖及python-flask对应版本。
装置flask
rpm装置
因为兼容性报告显示依赖包缺失,尝试间接用下载的rpm包装置做个验证。
[[email protected] test]# yum install -y python36-flask-1.1.2-4.el7.noarch.rpmLast metadata expiration check: 1:39:08 ago on Mon 22 Mar 2021 10:35:29 AM CST.Error: Problem: conflicting requests - nothing provides python36-setuptools needed by python36-flask-1.1.2-4.el7.noarch - nothing provides python(abi) = 3.6 needed by python36-flask-1.1.2-4.el7.noarch - nothing provides python36-click >= 5.1 needed by python36-flask-1.1.2-4.el7.noarch - nothing provides python36-itsdangerous >= 0.24 needed by python36-flask-1.1.2-4.el7.noarch - nothing provides python36-jinja2 >= 2.10.1 needed by python36-flask-1.1.2-4.el7.noarch - nothing provides python36-werkzeug >= 0.15 needed by python36-flask-1.1.2-4.el7.noarch(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
因为依赖起因未能装置。
pip形式装置
应用pip装置同版本的flask,因为flask依赖python3,应用pip3。
[[email protected] ~]# pip3 install flaskWARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.Collecting flask Using cached Flask-1.1.2-py2.py3-none-any.whl (94 kB)Requirement already satisfied: itsdangerous>=0.24 in /usr/lib/python3.7/site-packages (from flask) (1.1.0)Requirement already satisfied: Werkzeug>=0.15 in /usr/local/lib/python3.7/site-packages (from flask) (1.0.1)Requirement already satisfied: click>=5.1 in /usr/local/lib/python3.7/site-packages (from flask) (7.1.2)Requirement already satisfied: Jinja2>=2.10.1 in /usr/lib/python3.7/site-packages (from flask) (2.11.2)Requirement already satisfied: MarkupSafe>=0.23 in /usr/lib64/python3.7/site-packages (from Jinja2>=2.10.1->flask) (1.1.1)Installing collected packages: flaskSuccessfully installed flask-1.1.2
运行和验证
查看版本
[[email protected] ~]# python3Python 3.7.9 (default, Dec 16 2020, 03:16:57)[GCC 7.3.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import flask>>> flask.__version__'1.1.2'
应用flask
应用flask官网 (https://flask.palletsprojects.com/en/1.1.x/quickstart/#a-minimal-application) 提供的入门程序
vim hello.py
编辑内容如下:
from flask import Flaskapp = Flask(__name__)@app.route('/')def hello_world(): return 'Hello, World!'
编辑后保留退出,在终端输出如下命令:
[[email protected] ~]# export FLASK_APP=hello.py[[email protected] ~]# python3 -m flask run * Serving Flask app "hello.py" * Environment: production WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Debug mode: off * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
可见运行胜利。
相干链接:
- openEuler官网:www.openeuler.org/
- OS迁徙专区: https://www.openeuler.org/zh/...
- openEuler兼容性列表:https://www.openeuler.org/zh/...
- openEuler迁徙指南:https://www.openeuler.org/zh/...