当前位置: 首页 > news >正文

【小沐学Python】Python实现Web服务器(CentOS下打包Flask)

文章目录

  • 1、简介
  • 2、下载Python
  • 3、编译Python
  • 4、安装PyInstaller
  • 5、打包PyInstaller
  • 6、相关问题
    • 6.1 ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips 26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168
    • 6.2 ImportError: cannot import name 'ParameterSource' from 'click.core' (/tmp/_MEIdZoUtq/click/core.pyc)
    • 6.3 python: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
  • 结语

1、简介

CentOS 大家应该很熟悉了,英文全称:Community Enterprise Operating System(社区企业操作系统),是 RHEL(红帽企业 Linux) 的免费发行版本,也是目前市面上用得最多的最火的商用 Linux 发行版。
在这里插入图片描述
PyInstaller是一个十分有用的第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。

因为Python中有很多三方包,我们想要这些三方包也包含在里面就需要一个工具,就是pyinstaller,很简单,直接在命令行输入pip install pyinstaller

pip install pyinstaller

2、下载Python

wget https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz

在这里插入图片描述

# 解压压缩包
tar -zxvf Python-3.8.10.tgz  

在这里插入图片描述

3、编译Python

# 下载依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel# 进入文件夹
cd Python-3.8.10# 配置安装位置
# ./configure prefix=/usr/local/python3
# ./configure --prefix=/usr/local/python3Dir
./configure --prefix=/usr/local/python3 --enable-shared --with-ssl 

在这里插入图片描述

# 安装
make && make install

在这里插入图片描述

whereis python
# which python

在这里插入图片描述

find / -name libpython3.8.so.1.0

在这里插入图片描述
添加软连接:

ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
python3 -V
pip3 -V

查看软连接指向:

ll /usr/bin/ | grep python
ll /usr/bin/ | grep pip

软连接:相当于windows的快捷方式,通常我们安装软件后都会在桌面添加一个快捷图片,方便我们快速的操作软件。
CentOS7默认python2.7-----软连接对应是python和python2.7
CentOS7新安装python3.9-----软连接命名为python3

更改yum配置:

vi /usr/bin/yum
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/bin/yum-config-manager
#!/usr/bin/python 改为 #!/usr/bin/python2

4、安装PyInstaller

pip3 install PyInstaller 

在这里插入图片描述

5、打包PyInstaller

尝试打包操作,发现报错。

# pyinstaller -F main.py 
python -m PyInstaller main.spec

在这里插入图片描述
复制文件到/usr/lib64里面

cp /usr/local/python3/lib/libpython3.8.so.1.0 /usr/lib64/
cp /usr/local/python3/lib/libpython3.8.so.1.0 /usr/lib/

尝试打包操作,成功。

python3 -m PyInstaller main.spec

在这里插入图片描述

6、相关问题

6.1 ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the ‘ssl’ module is compiled with ‘OpenSSL 1.0.2k-fips 26 Jan 2017’. See: https://github.com/urllib3/urllib3/issues/2168

原因:这个错误是由于 urllib3 的新版本需要 OpenSSL 1.1.1+ 以上版本引起的。而当前的 ssl 模块是使用 Libre SSL 2.8.3 编译的,不符合要求。解决这个问题的方法是更新 ssl 模块的版本,使其与 urllib3 的要求相匹配。

requests包引入了urllib3,而新版本的urllib3 需要OpenSSL 1.1.1+以上版本,否则报错:ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+,currently the ‘ssl’ module is compiled with ‘OpenSSL 1.0.2k-fips 26 Jan 2017’. See: https://github.com/urllib3/urllib3/issues/2168,而且去官网查看的时候,发现对于1.1.1之前的版本已经不再支持了,所以需要安装新的版本用于支持。

解答:安装新的版本。

pip install urllib3==1.26.15

在这里插入图片描述

6.2 ImportError: cannot import name ‘ParameterSource’ from ‘click.core’ (/tmp/_MEIdZoUtq/click/core.pyc)

原因:出现该错误,其根本原因在于是black模块,其模块版本可能过时,升级black模块版本即可。

解答:更新一下相应的库即可。

pip install black --upgrade

6.3 python: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory

原因:没有找到libpython3.8.so.1.0。

find / -name libpython3.8.so.1.0

解答:重新编译python源码的时候,增加参数 --enable-shared

./configure --prefix=/usr/local/python3 --enable-shared --with-ssl 

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

在这里插入图片描述

http://www.lryc.cn/news/368382.html

相关文章:

  • Cesium开发环境搭建(一)
  • 视频、图片、音频资源抓取(支持视频号),免安装,可批量,双端可用!
  • FreeRTOS实时系统 在任务中增加数组等相关操作 导致单片机起不来或者挂掉
  • CentOS 7基础操作08_Linux查找目录和文件
  • CI/CD实战面试宝典:从构建到高可用性的全面解析
  • NLP实战入门——文本分类任务(TextRNN,TextCNN,TextRNN_Att,TextRCNN,FastText,DPCNN,BERT,ERNIE)
  • MySQL: 表的增删改查(基础)
  • WDF驱动开发-PNP和电源管理(三)
  • Redis集群和高可用性:保障Redis服务的稳定性
  • C# WPF入门学习主线篇(二十一)—— 静态资源和动态资源
  • 出现 Navicat 和 Cmd 下SQL 版本 | 查询不一致的解决方法
  • 31、matlab卷积运算:卷积运算、二维卷积、N维卷积
  • C++青少年简明教程:文件
  • Kimichat使用案例010:快速识别出图片中的表格保存到Excel
  • [大师C语言(第二十四篇)]C语言指针探秘
  • Docker命令总结
  • 把chatgpt当实习生,进行matlab gui程序编程
  • LabVIEW 与组态软件在自动化系统中的应用比较与选择
  • html--万年历
  • 2013年 阿拉斯加巴罗活动层厚度和土壤含水量
  • 超详解——python数字和运算——小白篇
  • LabVIEW图像采集处理项目中相机选择与应用
  • Java——IO流(一)-(2/9):File类的常用方法(判断文件类型、获取文件信息、创建删除文件、遍历文件夹)
  • 电子设计入门教程硬件篇之集成电路IC(二)
  • Unity3D测量面积和角度实现方法(二)
  • vite 配置 typescript 环境
  • ThreadCache线程缓存
  • UE5_加载本地图片(jpg, png) 转 UTexture
  • Linux操作系统:Spark在虚拟环境下的安装及部署
  • 内网安全--隧道技术代理技术