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

news2024/11/23 22:18:02

文章目录

  • 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.coloradmin.cn/o/1806556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

seerfar选品功能,OZON运营插件工具seerfar

在当今这个数字化、信息化的时代,电子商务的飞速发展使得越来越多的商家开始关注如何更高效地运营自己的在线店铺。其中,选品作为电商运营的重要一环,直接影响着店铺的流量、转化率和利润。在OZON这样的电商平台上,如何快速、准确…

Incredibuild for Mac 来了!

Mac 开发者在寻找适合自己需求的工具时可能会遇到一些困难,因为 Mac 操作系统相对封闭,不像其他系统那样开放和灵活。尽管如此,Mac 开发者在开发应用程序时的需求(比如功能、效率等)和使用其他操作系统的开发者是类似的…

联合体和枚举<C语言>

导言 在C语言中除了结构体外,联合体和枚举也是自定义类型,联合体主要用于节省空间,在同一块内存存储多种类型的数据,而枚举可以提高代码的可读性、可维护性。 联合体(union) 它还有个更容易理解的名字&…

Triton学习笔记

b站链接:合集Triton 从入门到精通 文章目录 算法名词解释:scheduler 任务调度器model instance、inference和requestbatching 一、Triton Inference Server原理1. Overview of Trition2. Design Basics of Trition3. Auxiliary Features of Trition4. A…

C语言:定义和使用结构体变量

定义和使用结构体变量 介绍基础用法1.定义结构体2. 声明结构体变量3. 初始化和访问结构体成员4. 使用指针访问结构体成员5. 使用结构体数组 高级用法6. 嵌套结构体7. 匿名结构体8. 结构体和动态内存分配9. 结构体作为函数参数按值传递按引用传递 介绍 在C语言中,结…

找出链表倒数第k个元素-链表题

LCR 140. 训练计划 II - 力扣(LeetCode) 快慢指针。快指针臂慢指针快cnt个元素到最后; class Solution { public:ListNode* trainingPlan(ListNode* head, int cnt) {struct ListNode* quick head;struct ListNode* slow head;for(int i …

抓住时机的核心:坚持学习准备着

在这个快节奏的时代,时间对于每个人来说都是宝贵的。能否在合适的时间做正确的事情,往往决定了我们成功的概率。但同时,我们也要认识到,逆风翻盘虽少,却并非不可能。在这个过程中,投资自己,投资…

【python】错误SyntaxError: invalid syntax的解决方法总结

解决Python报错:【Python】错误SyntaxError: invalid syntax的解决方法总结 SyntaxError是Python编程中常见的错误之一,它表明代码中有语法错误。这种错误可能由多种原因引起,包括但不限于拼写错误、错误的缩进、缺少括号等。本文将介绍几种常…

1-什么是护网行动

1.什么是护网行动 2016年,公安部会同民航局、国家电网组织开展了“护网2016”网络安全攻防演习活动。同年,《网络安全法》颁布,出台网络安全演练相关规定:关键信息基础设施的运营者应“制定网络安全事件应急预案,并定期进行演练”…

LeetCode338比特位计数

题目描述 给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 解析 动态规划&#xff0c;将当前的数的最后一位去掉&#xff0c;然后判断去掉的最后一位是0还是1。…

展会邀请 | 龙智即将亮相2024上海国际嵌入式展,带来安全合规、单一可信数据源、可追溯、高效协同的嵌入式开发解决方案

2024年6月12日至14日&#xff0c;备受全球嵌入式系统产业和社群瞩目的2024上海国际嵌入式展&#xff08;embedded world china 2024&#xff09;即将盛大开幕&#xff0c;龙智将携行业领先的嵌入式开发解决方案亮相 640展位 。 此次参展&#xff0c;龙智将全面展示专为嵌入式行…

类似crossover的容器软件有哪些 除了crossover还有什么 Mac虚拟机替代品

CrossOver是Mac用来运行exe文件的一款软件&#xff0c;但是并不是所有的exe文件CrossOver都支持运行。想要在Mac上运行exe文件的方法并不是只有使用CrossOver这一种&#xff0c;那么有没有类似的软件也可以实现exe文件在Mac上运行呢&#xff1f; CrossOver类似软件有哪些 1、Pl…

[Cloud Networking] Layer 2

文章目录 1. 什么是Mac Address?2. 如何查找MAC地址&#xff1f;3. 二层数据交换4. [Layer 2 Protocol](https://blog.csdn.net/settingsun1225/article/details/139552315) 1. 什么是Mac Address? MAC 地址是计算机的唯一48位硬件编码&#xff0c;嵌入到网卡中。 MAC地址也…

Spring Boot 实现动态数据源配置

前言 之前在CSDN博客以及某站看了教程&#xff0c;不免觉得有点不知如何下手&#xff0c;好在最后融合了以下&#xff0c;得出了一个比较简单的配置动态数据源的过程。 首先项目是Spring Boot的单体项目&#xff0c;我们的需求是要连接多个数据库&#xff0c;那么就需要配置多个…

CleanMyMac2028永久破解版苹果mac电脑垃圾清理软件

CleanMyMac&#xff0c;这款苹果mac电脑垃圾清理软件简直就是我的救星啊&#xff01;以前总是被电脑上的各种垃圾文件困扰&#xff0c;不知道如何彻底清理。自从用了CleanMyMac&#xff0c;我的电脑就像重新获得了新生一样&#xff01; 它的功能强大到让我惊叹不已&#xff01;…

深度学习复盘与论文复现C

文章目录 4、Distributed training4.1 GPU architecture 5、Recurrent neural network5.1 The basic structure of RNN5.2 Neural networks without hidden states5.3 Recurrent neural networks with hidden states5.4 summary 6、Language Model Dataset (lyrics from Jay Ch…

Java 泛型类,泛型方法,泛型接口和通配符(用来限定类和方法的使用范围)

测试类 package Genericity;import java.util.ArrayList;public class test {public static void main(String[] args) {// 使用泛型方法添加元素ArrayList<String> list new ArrayList<>();MyToolClass.ListAdd(list,"fdsf","dsfa");System…

Unity协程学习心得

前言 个人总结的一些Unity协程学习心得&#xff0c;如有不对请在评论区指出一起学习&#xff01;感谢。 在Unity编程中谈到异步逻辑&#xff0c;可以考虑使用协程来实现。协程&#xff08;Coroutine&#xff09;在Unity中的主要作用就是把一个任务暂停&#xff08;挂起&#…

动态IP在云计算中的应用与优势(短效IP的作用)

一、云计算概述 云计算是指通过互联网将计算资源和服务提供给用户的一种模式。它具有高灵活性、可扩展性和成本效益等特点&#xff0c;使得企业能够快速响应市场变化&#xff0c;降低IT投入成本。云计算的核心优势在于其资源的动态分配和高效利用。 二、动态IP在云计算中的角…

动态IP基础解析:为什么我们需要它?

在深入探讨互联网世界的运作机制时&#xff0c;IP地址无疑是其核心要素之一。IP地址&#xff0c;作为网络设备的唯一标识&#xff0c;不仅确保了数据的准确传输&#xff0c;更是网络安全和管理的基石。本文将深入解析动态IP的基础知识&#xff0c;并探讨其重要性及在多种场景下…