欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 【小沐学Python】Python实现Web服务器(CentOS下打包Flask)

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

2024/11/30 12:29:26 来源:https://blog.csdn.net/hhy321/article/details/139566516  浏览:    关键词:【小沐学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???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com