Python入门教程(高级版)

news2024/11/22 1:49:25

  Python用了好几年了,但似乎一直没 “系统入门” 过(o(╯□╰)o)。今年(2023年)趁着五一假期,我做了一次相对完整的 “入门” ——本文是这次学习历程的详细记录。


目录

  • 1 Python基础
    • 1.1 Python
      • 1.1.1 认识Python
      • 1.1.2 Python安装
      • 1.1.3 pip包管理
    • 1.2 Python开发工具
      • 1.2.1 PyCharm(专业版)
      • 1.2.2 Anaconda
  • 2 Python虚拟环境
    • 2.1 认识虚拟环境
    • 2.2 虚拟环境管理
      • 2.2.1 pipenv工具
      • 2.2.2 virtualenv工具
    • 2.3 开发中使用虚拟环境
  • 3 Python开发(Coding)
    • 3.1 第一种——命令+PyCharm
    • 3.2 第二种——纯PyCharm
  • 4 PyQT5
    • 4.1 PyQT5安装、配置
      • 4.1.1 安装PyQT5
      • 4.1.2 配置PyQT5
    • 4.2 PyQT5开发示例
      • 4.2.1 PyQT UI设计
      • 4.2.2 业务逻辑代码
  • 5 Python程序打包
    • 5.1 打包基础知识
    • 5.2 打包示例
  • 附 本文示例程序下载

1 Python基础

1.1 Python

1.1.1 认识Python

  Python由荷兰数学和计算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言。随着版本的不断更新和语言新功能的添加,逐渐被用于独立、大型项目的开发。
  Python解释器易于扩展,可以使用CC++(或其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。
  下面,我们通过一些代码来感受Python简单、优雅、高效
  (1)第一个程序:

word=100 #无需定义
word="Hello, World!" #类型可变
print(word)

  (2)选择程序设计:

## 选择程序设计
# <if多分支>
s=95
if s>=90:
    print("优秀")
elif 80<=s<90: #逻辑运算连写
    print("良好")
elif 60<=s<80:
    print("合格")
else:
    print("不合格")

# <三元运算符>
x,y=15,22
big= x if x>y else y #如果x>y则x,否则y

  (3)循环程序设计:

## 循环程序设计
# <while-else循环>
s=n=1
while n<=100:
    s+=n
    n+=1
else:
    print("1~100求和:{0}".format(s))

# <for循环>
PI=0
N=100
for k in range(N):
    PI += 1/pow(16,k)*( \
        4/(8*k+1) - 2/(8*k+4) - \
        1/(8*k+5) - 1/(8*k+6))
print("圆周率π={:.9f}".format(PI))

  (4)数据结构:

## 数据结构
# <列表>
a=[1,2,3,4,5] #a=list()
print(a[0]) #下标
print(a[2:-1]) #切片
aa=[value*10 for value in a if value >3] #列表解析

# <元组>
b=(1,2,3,4,(5,50)) #b=tuple()
print(b[4]) #下标
print(b[2:4]) #切片

# <字典>
c=dict([["m",12],["n","wer"],["2",55]]) #c=dict(x=1,y=2,z=3)
print(c["2"]) #访问
f1=lambda p:p+10;f2=lambda p:p+20 #lambda表达式
cc={f1(p):f2(p) for p in range(4)} #字典解析

  (5)函数

## 函数
# <一般形式>
def func(x):
    m=x+100
    n=x/10
    return m,n

# <默认形参>
def func1(x,y=100):
    m=x+y
    n=x-y
    return m*n

# <变长形参>
def func2(*t): #元组
    a=0
    for v in t:
        a+=v
    return a
def func3(**d): #字典
    for k,v in d.items():
        print("{0}<-->{1}".format(k,v))

# <关键参数>
def func4(x,y,z):
    x+=10
    y+=100
    z+=1000
    return x,y,z

# lambda表达式
func5=lambda p,q=0:p*q+3

if __name__=="__main__":
    m,n=func(10) #一般形式
    a=func1(20) #默认形参
    b=func2(1,2,3,4,5) #变长形参-元组
    func3(**dict(a=1,b=2,c=3)) #变长形参-字典
    x,y,z=func4(y=10,z=20,x=15) #关键参数
    c=func5(10,2) #lambda

  (6)类与对象

# <类>
class Person:
    PId=100 #类变量,含于cls
    def __init__(self,**args): #构造函数
        self.name=args['name']
        self.age=args['age']
        self.__ID=args['ID'] #私有变量
        self.phone=args['phone']
        
    def GetIdentity(self): #对象方法
        print("ID:{0},Name:{1},Age:{2},Phone:{3}".format(self.__ID,self.name,self.age,self.phone))
    
    @classmethod
    def GetPId(cls): #类方法
        print("PId=>{0}".format(cls.PId))
    
    @staticmethod
    def eat(): #静态方法
        print("人吃东西!")

if __name__=="__main__":
    person=Person(**dict(name='yxy',age=26,ID=522626,phone=1350855))

  (7)机器学习:

import warnings
from pandas import read_csv
from sklearn.model_selection import KFold,cross_val_score
from sklearn.svm import SVC
warnings.filterwarnings("ignore")
#导入数据
name=["preg","plas","pres","skin","test","mass","predi","age","class"] #字段属性
piData=read_csv('e:\\file home\\Pima_Indians.csv',names=name)
#将数据分为特征、标签
Data=piData.values[:,0:8] #特征
Label=piData.values[:,8] #标签
kfold=KFold(n_splits=10,random_state=7)
model=SVC()
res=cross_val_score(model,Data,Label,cv=kfold) #分类准确度
print("准确度: %.5f"%(res.mean()))  # 0.65103

1.1.2 Python安装

  (一)下载安装包
  访问 Python官网 下载 Python安装包,目前(截至2023年4月26日)最新稳定版是 Python3.11.3,如下图所示。至于到底选择3.10还是3.11,取决于您的电脑配置和意愿了
Python安装包下载

  (二)安装Python
  安装Python与安装其他Windows软件一样简单,但需注意以下几个地方

Install Python(安装选项)Customize installation(自定义安装)
Add Python xx to PATH(添加Python到环境变量)
Optional Features(选择功能组件)Documentation(帮助文档)
pip(包管理器)
tcl/tk and IDLE(Python开发环境)
Python test suite(标准库和测试套件)
py launcher(Python启动器,关联.py文件)
for all users(所有用户可用)
Advanced Options(高级选项)Install for all users(为所有用户安装)
Associate files with Python(关联.py文件)
Create shortcuts for installed applications(为安装程序创建快捷方式)
Add Python to environment variables(添加Python到环境变量)
Precompile standard library(预编译标准库)

  其他参考资料:Python安装教程-史上最全。

1.1.3 pip包管理

  (1)CMD清屏cls
  (2)CMD查看当前路径chdir
  (3)CMD终止执行命令Ctrl+C
  (4)CMD切换路径

序号操作代码
当前目录chdir,如C:\WINDOWS\system32
切换根目录E:
切换至目标目录cd E:\Download

  (5)CMD打开路径

方法代码
方法一①开始菜单,搜索cmd;②以管理员身份运行;③切换至目标目录(参考(4))。
方法二①打开目标目录;②地址栏输入cmd,回车。

  (6)pip包管理
  在线形式

序号操作代码
pip版本pip --version
安装包pip install numpy(最新版)、pip install numpy==1.24.3(指定版)或pip install "keras>=2.9.0"(最低版)
更新包pip install --upgrade scipy
列出所有包pip list
卸载包pip uninstall scipy
临时换源-i 源址,如-i https://pypi.tuna.tsinghua.edu.cn/simple(清华源,其他源附后)
永久换源C:\Users\×××\pip(无pip目录则新建)创建文件pip.ini,编辑换源代码(附后)
批量安装包pip install -r requirements.txtpip freeze > requirements.txt
下载包(不安装)pip download numpy==1.24.3 -i https://pypi.tuna.tsinghua.edu.cn/simple -d E:\Download
查看帮助文档pip --help

  换源代码:

[global]
time-out=6000
index-url=https://pypi.tuna.tsinghua.edu.cn/simple
[install]
use-mirrors=true
mirrors=https://pypi.tuna.tsinghua.edu.cn/simple/
trusted-host=pypi.tuna.tsinghua.edu.cn

  另外,也可cmd执行如下代码永久换源:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple #设置清华源
pip config unset global.index-url #恢复默认源

  附:国内常用的镜像源

  • 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
  • 中国科学技术大学:https://pypi.mirrors.ustc.edu.cn/simple/
  • 阿里云:https://mirrors.aliyun.com/pypi/simple/
  • 豆瓣:https://pypi.douban.com/simple/

  离线形式

序号操作代码
下载包网址https://pypi.org/https://www.lfd.uci.edu/~gohlke/pythonlibs/
安装包pip install 路径+somePackage,如pip install E:\Download\numpy-1.24.3-cp38-cp38-win_amd64.whl

1.2 Python开发工具

  在这里,我推荐两款Python开发工具:①Pycharm(适合开发);②Anaconda(适合科学计算)。以下介绍两款开发工具的安装。

1.2.1 PyCharm(专业版)

  (一)下载安装包
  访问 PyCharm官网 下载 PyCharm安装包(请选择PyCharm2022.3.2及以下版本),下载页面如下图所示。
Pycharm下载页面

  (二)安装PyCharm
  (1)右键安装包,以管理员身份运行
pycharm安装包

  (2)选择安装路径,如D:\PyCharm 2022.3
选择安装路径

  (3)安装选项,选择Create Desktop Shortcut(其他可不用)。
安装选项

  (4)选择开始菜单文件夹,如JetBrains;然后点击安装Install
选择开始菜单文件夹

  (5)安装完成后,勾选Run Pycharm再点击完成Finish
安装完成

  (6)接受用户许可后,Pycharm首次运行弹出如下对话框,这里先不管,直接点击Exit退出。
首次运行

  剩余安装步骤请扫描下方公众号二维码或关注公众号:徐公,回复关键字:Pycharm获取。
徐公

  (三)配置PyCharm
  (1)启动进入欢迎页:【欢迎页(Welcome to PyCharm)】 → \rightarrow 【自定义(Customize)】 → \rightarrow 【所有设置(All settings)】 → \rightarrow 【外观和行为(Appearance and Behavior)】 → \rightarrow 【系统设置(System Seetings)】 → \rightarrow 【项目(Project)】 → \rightarrow 【取消启动时重新打开项目Reopen projects on startup)】 → \rightarrow 【确认(OK)】。
  (2)预设Coding默认信息:【欢迎页(Welcome to PyCharm)】 → \rightarrow 【自定义(Customize)】 → \rightarrow 【所有设置(All settings)】 → \rightarrow 【编辑(Editor)】 → \rightarrow 【文件和代码模版(File and Code Templates)】 → \rightarrow 【Python脚本(Python Script)】 → \rightarrow 【默认信息(附后)】 → \rightarrow 【确认(OK)】。

# -*- coding: utf-8 -*-
"""
# @Time : ${DATE} ${TIME}
# @Author : xyyang(自定义)
# @Email : xyyangwhu@163.com(自定义)
"""

  (3)恢复默认(出厂)设置:【文件(File)】 → \rightarrow 【管理IDE设置(Manage IDE Settings)】 → \rightarrow 【恢复默认设置(Restore Default Settings)】 → \rightarrow 【确认(OK)】。
  (4)取消PEP8代码风格检查(黄色下划线):【文件(File)】 → \rightarrow 【设置(Settings)】 → \rightarrow 【编辑(Editor)】 → \rightarrow 【检查(Inspections)】 → \rightarrow Python → \rightarrow 【取消PEP8代码风格冲突(PEP8 coding style violation)】 → \rightarrow 【确认(OK)】。

1.2.2 Anaconda

  访问 Anaconda官网 下载 Anaconda安装包,安装方法同大多数Windows软件一样,故此处不再赘述。详细教程可参考:Anaconda安装(过程详细)或【保姆级教程】Anaconda的安装(包括介绍、下载、安装与环境变量配置等)。

2 Python虚拟环境

2.1 认识虚拟环境

  Python应用程序经常使用第三方包或者模块,有时还需依赖特定的版本,故不存在一个能适应所有Python应用程序的编程环境(解释器环境)。很多时候Python应用程序所依赖的版本相互冲突,满足其中一个则另一个无法运行,解决这一问题的策略——虚拟环境虚拟环境是一个包含了特定Python解析器及一些软件包的自包含目录,不同应用程序可使用不同的虚拟环境,从而解决了依赖冲突问题,且虚拟环境中只需安装应用相关的包、模块,给部署提供了便利。使用虚拟环境的优点如下:

  • 在虚拟环境中安装和卸载库不影响全局库(特别方便学习);
  • 方便不同的项目使用特定版本的库,相互独立不干扰;
  • 根据虚拟文件,可方便地搭建与开发环境相同的部署环境。

  在Python中,使用pipenv管理虚拟环境——它是基于pip的Python包管理工具,和pip的用法非常相似,可看作pip的加强版。pipenv的出现解决了旧的pip+virtualenv+requirements.txt工作方式的弊端。具体来说,它是pipPipfileVirtualenv的结合体。

2.2 虚拟环境管理

2.2.1 pipenv工具

序号操作代码
进入项目路径(必须)cd C:\Users\xyyan\Desktop\devPrj
安装虚拟工具(查看版本)pip install pipenvpipenv --version
创建虚拟环境(生成Pipfile、Pipfile.lock)pipenv installpipenv [install] --python 3.8(基于系统安装的Python)
激活虚拟环境(查看目录)pipenv shellpipenv --venv
安装包pipenv install numpy==1.24.0(参数-i无效,可参考1.1.3-(6)换源)
更新包pipenv update numpy
卸载包pipenv uninstall numpy(指定)、pipenv uninstall --all(所有)
列出所有包pip list
查看包的依赖关系pipenv graph
生成(更新)Pipfile.lockpipenv lockpipenv update=pipenv lock+pipenv sync
十一退出虚拟环境exit
十二删除虚拟环境pipenv --rm(需在目录下,不管激活与否)
十三查看帮助文档pipenv --help

2.2.2 virtualenv工具

序号操作代码
进入项目路径(必须)cd E:\Python Codes\PyprjTest0429
安装虚拟工具(查看版本)pip install virtualenv(虚拟环境模块)、pip install virtualenvwrapper-win(辅助模块)
创建虚拟环境并进入mkvirtualenv -p python3.10 PPTenv0429(指定Python)、mkvirtualenv PPTenv0429(系统Python)
查看已有的虚拟环境workon
使用某个虚拟环境workon PPTenv0429
安装包pip install numpy==1.24.0pip install -r requirements.txt(批量)
更新包pip update numpy
卸载包pip uninstall numpy(指定)、pip uninstall --all(所有)
列出所有包pip list
退出虚拟环境deactivate
十一删除虚拟环境rmvirtualenv PPTenv0429(先退出,再删除)

  其中,新建虚拟环境位于C:\Users\×××\.virtualenvs,而Pipfile、Pipfile.lock文件位于项目所在路径,如C:\Users\xyyan\Desktop\devPrj。若欲 将虚拟环境置于项目目录,需按以下步骤设置(系统)环境变量WORKON_HOME:【此电脑】 → \rightarrow 【右键/属性】 → \rightarrow 【高级系统设置】 → \rightarrow 【系统属性/环境变量】 → \rightarrow 【系统变量】 → \rightarrow 【新建】 → \rightarrow 【变量名:WORKON_HOME、变量值:venv → \rightarrow 【确定】。
  其他参考资料:Python学会使用虚拟环境——pipenv。

2.3 开发中使用虚拟环境

  (一)开发部分:新建项目(devPrj文件夹),创建虚拟环境并于其中开发(根据项目需求安装依赖包库)。最终,形成项目源代码文件Pipfile文件Pipfile.lock文件,并将其(三者)移交给部署人员。
  (二)部署部分:新建项目(depPrj文件夹),cmd打开文件夹,通过pipenv install根据Pipfile、Pipfile.lock自动安装第三方包库,从而恢复开发环境。

3 Python开发(Coding)

  前两章详细讲述了Python+PyCharm安装Python虚拟环境,本章介绍如何使用PyCharm开发Python程序。

3.1 第一种——命令+PyCharm

  (1)新建项目文件(确定好路径):
新建项目文件

  (2)使用PyCharm打开项目
pycharm打开项目

  (3)创建虚拟环境并激活(基于PyCharm终端)
创建虚拟环境

激活虚拟环境

  可看到项目文件夹生成了PipfilePipfile.lock文件:
在这里插入图片描述

  (4)设置项目Python解释器:【File → \rightarrow Seetings → \rightarrow Project:PyPrjTest0428 → \rightarrow Python Interpreter → \rightarrow Add Interpreter → \rightarrow Add Local Interpreter → \rightarrow Existing → \rightarrow Browser → \rightarrow C:\Users\xyyan\.virtualenvs\PyPrjTest0428-_k3qSpRL\Scripts\python.exe(根据实际)】 → \rightarrow OK】,如下图:
在这里插入图片描述

  (5)在虚拟环境中安装包(基于PyCharm终端)
在这里插入图片描述

  (6)新建Python文件
在这里插入图片描述

  (7)编写Python代码并运行
在这里插入图片描述

  代码如下:

import math

def GetArea(r):
    S=math.pi*r*r
    return S

if __name__=="__main__":
    S=GetArea(5)
    print("面积={:.2f}".format(S))

  至此,第一种方式(命令+PyCharm)便介绍完毕。

3.2 第二种——纯PyCharm

  (1)使用PyCharm创建新项目
在这里插入图片描述

  (2)配置虚拟环境参数
配置虚拟环境参数

  (3)在虚拟环境中安装包(基于PyCharm终端)
在这里插入图片描述

  (4)新建Python文件
在这里插入图片描述

  (5)编写Python代码并运行
在这里插入图片描述

  代码如下:

def GetMax(*arg):
    maxelem=arg[0]
    for elem in arg:
        if elem>maxelem:
            maxelem=elem
    return maxelem

if __name__=="__main__":
    maxelem=GetMax(4,1,7,3,5)
    print("最大值是:{}".format(maxelem))

  至此,第二种方式(纯PyCharm)便介绍完毕。

4 PyQT5

4.1 PyQT5安装、配置

4.1.1 安装PyQT5

  PyQT5是基础常用模块,可安装在Python包目录(如D:\Python310\Lib\site-packages),也可安装于某项目的虚拟环境(如C:\Users\×××\.virtualenvs\PyCharmTest\Lib\site-packages)。
  (1)安装PyQT5pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simple,执行情况见下图:
安装PyQT5

  (2)安装PyQT5-toolspip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple,执行情况见下图:
安装PyQT5-tools

  查看Python包目录可知,Python UI界面设计QT Designer位于路径D:\Python310\Lib\site-packages\qt5_applications\Qt\bin中。

4.1.2 配置PyQT5

  PyCharm配置PyQT5包含 Qt Designer(Python UI设计器——可视化界面控件拖拽设计)、PyUIC(将.ui文件转换成.py文件)和PyRcc(将.qrc资源文件换成.py文件)这三项的配置,按步骤【欢迎页(Welcome to PyCharm)】 → \rightarrow 【自定义(Customize)】 → \rightarrow 【所有设置(All settings)】 → \rightarrow 【工具(Tools)】 → \rightarrow 【外部工具(External Tools)】 → \rightarrow 【加号(+)】准备配置。
  (一)Qt Designer配置
  配置项目见下表:

序号项目配置内容
NameQt Designer(自定义)
DescriptionPython UI designer(自定义)
ProgramD:\Python310\Lib\site-packages\qt5_applications\Qt\bin\designer.exe(根据实际情况)
Arguments$FilePath$
Working directory$FileDir$

  配置结果如下图:
Qt Designer

  (二)PyUIC配置
  配置项目见下表:

序号项目配置内容
NamePyUIC(自定义)
DescriptionConvert ui files to Python files(自定义)
ProgramD:\Python310\python.exe(根据实际情况)
Arguments-m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
Working directory$FileDir$

  配置结果如下图:
PyUIC

  (三)PyRcc配置
  配置项目见下表:

序号项目配置内容
NamePyRcc(自定义)
DescriptionConvert qrc files to Python files(自定义)
ProgramD:\Python310\Scripts\pyrcc5.exe(根据实际情况)
Arguments$FileName$ -o $FileNameWithoutExtension$_rc.py
Working directory$FileDir$

  配置结果如下图:
PyRcc

  其他参考资料:PyQt5 从零开始环境搭建、PyQt完整入门教程。

4.2 PyQT5开发示例

  新建项目,并为其创建虚拟环境(详细步骤请参考本文3.13.2);安装PyQT5包库(若慢,请参考1.1.3-(6)换源),结果如下图。
新建项目及虚拟环境

在这里插入图片描述

4.2.1 PyQT UI设计

  按【项目右键】 → \rightarrow 【外部工具(External Tools)】 → \rightarrow Qt Designer】打开QT设计器,如下图。
在这里插入图片描述

在这里插入图片描述

  在QT设计器中,按下图设计好UI界面,并保存为Login.ui文件。
在这里插入图片描述

  返回PyCharm,按【Login.ui右键】 → \rightarrow 【外部工具(External Tools)】 → \rightarrow PyUIC】将Login.ui文件转换成Login.py文件,结果如下图。
在这里插入图片描述

在这里插入图片描述

4.2.2 业务逻辑代码

  按【项目右键】 → \rightarrow 【新建(New)】 → \rightarrow 【Python文件(Python File)】步骤,新建业务逻辑代码文件MainProgram.py和用户包库文件UserModuleLib.py(用于下文测试多Python文件打包)并编辑下图所示代码。
在这里插入图片描述

在这里插入图片描述

  附:MainProgram.pyUserModuleLib.py代码

# MainProgram.py
import sys
from PyQt5.QtGui import QIcon
from PyQt5.QtWidgets import QApplication, QMainWindow
from Login import Ui_mainForm  # 导入UI模块
from UserModuleLib import MyString # 用户包库

class UserLoginMainForm(QMainWindow, Ui_mainForm):  # 多继承
    def __init__(self, parent=None):
        super(UserLoginMainForm, self).__init__(parent)  # 初始化基类
        self.setupUi(self)  # 继承方法
        self.setWindowIcon(QIcon(r".\res\userLoginForm.ico"))  # 窗体图标
        self.PbtnLogin.clicked.connect(self.display)  # 登录按钮:信号+槽
        self.PbtnExit.clicked.connect(self.close)  # 退出按钮:信号+槽

    def display(self):
        username = self.LedUserName.text()  # 获取LineEdit的值
        password = self.LedPassword.text()
        self.TxtBInformation.setText("登陆成功!\n用户名:{}; 密码:{}".format(MyString(username), password))  # 设置TextBroswer的值

if __name__ == "__main__":
    app = QApplication(sys.argv)  # 应用程序对象
    ulfrm = UserLoginMainForm()
    ulfrm.show()  # 显示窗体
    sys.exit(app.exec_())
# UserModuleLib.py
def MyString(str):
    str="UserModuleLib+"+str
    return str

  按【MainProgram.py右键】 → \rightarrow Run 'MainProgram'】即可运行程序,结果如下图。
程序运行结果

5 Python程序打包

  Python程序的运行必须要有Python环境,但用户电脑上并非都有Python环境(即便有其版本也可能不同),如何解决这个问题呢?——我们可将Python程序打包为exe文件。这样,在Windows平台下即可直接运行该程序,而不论有无Python环境。
  Python打包模块众多,但一般都使用Pyinstaller进行,用起来也很简单。因此,本章介绍基于Pyinstaller的Python程序打包

5.1 打包基础知识

  首先,使用pip install pyinstaller安装Pyinstaller。由于Pyinstaller为基础常用模块,可安装在系统Python环境中(或安装在项目虚拟环境中——后续基于虚拟环境打包)。
pyinstaller安装

  Pyinstaller打包命令格式:pyinstaller -option1 -option2 -... 要打包的文件(如Pyinstaller -F -w somefile.pyPyinstaller -F -i someicon.ico somefile.py),参数选项见下表。

序号参数选项(简写,全称)说明
-F, -onefile打包成单个可执行文件(仅一个exe文件)
-D, -onedir打包多个文件,在dist中生成很多依赖文件,适合以框架形式编写工具代码,该方式代码较易于维护
-K, –tk在部署时包含TCL/TK
-a, -ascii不包含编码(在支持Unicode的Python版本上默认包含所有的编码)
-d, -debug产生debug版本的可执行文件
-w, -windowed, -noconsole使用Windows子系统执行,当程序启动时不会打开命令行(只对Windows有效)
-c, -nowindowed, -console使用控制台子系统执行(默认,只对Windows有效)。pyinstaller -c xxx.pypyinstaller xxx.py --console
-s, -strip可执行文件和共享库将run through strip。注意Cygwinstrip往往使普通的win32 Dll无法使用
-X, -upx如果有UPX安装(执行Configure.py时检测),会压缩执行文件(Windows系统中的DLL也会)
-o DIR, -out=DIR指定spec文件的生成目录。如果没有指定,而且当前目录是PyInstaller的根目录,会自动创建一个用于输出(spec和生成的可执行文件)的目录;如果没有指定,而当前目录不是Pyinstaller的根目录,则会输出到当前目录下
十一-p DIR, -path=DIR设置导入路径(与使用PYTHONPATH效果相似)。可以用路径分割符(Windows使用分号,Linux使用冒号)分割,指定多个目录也可以使用多个-p参数来设置多个导入路径,让pyinstaller自己去找程序需要的资源
十二-i <FILE.ICO>, -icon=<FILE.ICO> file.ico添加为可执行文件的资源(只对Windows系统有效),改变程序的图标。pyinstaller -i 路径.ico xxx.py
十三–i <FILE.EXE, N>, –icon=<FILE.EXE, N>file.exe的第n个图标添加为可执行文件的资源(只对Windows系统有效)
十四-v FILE, -version=FILEverfile作为可执行文件的版本资源(只对Windows系统有效)
十五-n NAME, -name=NAME可选的项目(产生的spec的)名字。如果省略,第一个脚本的主文件名将作为spec名字

  打包后生成builddist文件夹及.spec文件,exe文件就在新生成的dist文件夹下(此时exe有可能还运行不了,因为它可能涉及到一些资源文件或其他Python文件,将它们置于同一文件夹才可正确运行),如下图所示。打包完成后,spec文件和build文件夹即可删除。
在这里插入图片描述

  一般地,Pyinstaller会将环境中的库和模块全部打包,这使得一些用不着的库、模块也被包含进去。这些库被打包后,不仅会使exe文件变大,还会使其运行变卡、变慢,变得十分臃肿。因此,强烈建议大家在(项目)虚拟环境下打包
  其他参考资料(深度好文):用 Pyinstaller 模块将 Python 程序打包成 exe 文件(全网最全面最详细)。

5.2 打包示例

  本次打包即以4.2节的用户登录程序为例,项目目录如下:
在这里插入图片描述

  (1)进入项目文件夹cmdPyCharm Terminal进入项目文件夹(本文使用后者)。我们可使用pip list查看项目虚拟环境的包情况(很干净),如下图所示。
在这里插入图片描述

  (2)生成spec文件。使用命令pyi-makespec -F -w -i .\res\whu.ico MainProgram.py 生成MainProgram.spec文件,见下图:
spec文件

  (3)编辑spec文件。①补全 “a”部分 打包Python文件列表;②确认 “exe”部分 资源文件是否正确,如下图。
在这里插入图片描述

  (4)执行打包命令。执行打包命令pyinstaller MainProgram.spec对项目进行打包,执行情况见下图。出现红框内的话表示打包成功
在这里插入图片描述

  (5)查看打包结果:打开dist目录查看打包结果。
在这里插入图片描述

  (6)程序(软件)打包发布。新建程序(软件)主文件夹UserLogin,并拷贝exe文件res文件夹等进入,即可打包压缩发布,详情见下图。
在这里插入图片描述

  至此,基于Pyinstaller的多Python文件(含PyQT5库)打包介绍完毕。

附 本文示例程序下载

  为方便各位网友学习、交流,请在此处下载示例程序源码:下载示例源码(提取码:rnfz)。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/482158.html

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

相关文章

Oracle VM VirtualBox安装centos7步骤 for win10

目录 1.安装VirtualBox 2.安装vagrant 3.安装centos7 4.查看网络与百度和物理机连通情况 5.设置IP 1.安装VirtualBox 下载的链接:Downloads – Oracle VM VirtualBox 2.安装vagrant 根据自己的操作系统选择对应的版本。 Install | Vagrant | HashiCorp Developer 我的P…

asp.net+sqlserver旅游网站zjy99A2

1&#xff0e;系统登录&#xff1a;系统登录是用户访问系统的路口&#xff0c;设计了系统登录界面&#xff0c;包括用户名、密码和验证码&#xff0c;然后对登录进来的用户判断身份信息&#xff0c;判断是管理员用户还是普通用户。 2&#xff0e;系统用户管理&#xff1a;不管是…

redis使用总结

目录 redis安装与登录redis 持久化RDB(Redis DataBase)AOF(Append Only File)RDB-AOF混合持久纯缓存模式 redis 的 keyredis 的数据类型和常见应用场景StringListHashMapSet集合ZSet有序集合bitmap位图HyperLogLog基数统计GEO 地理空间Stream 流bitfiled redis 事务事务的正常执…

《基于EPNCC的脉搏信号特征识别与分类研究》阅读笔记

目录 一、论文摘要 二、论文十问 三、论文亮点与不足之处 四、与其他研究的比较 五、实际应用与影响 六、个人思考与启示 参考文献 一、论文摘要 为了快速获取脉搏信号的完整表征信息并验证脉搏信号在相关疾病临床诊断中的敏感性和有效性。在本文中&#xff0c;提出了一…

ChatGPT根据销售数据、客户反馈、财务报告,自动生成报告,并根据不同利益方的需要和偏好进行调整?

该场景对应的关键词库&#xff08;24个&#xff09;&#xff1a; 汇报对象身份&#xff08;下属、跨部门平级、领导&#xff09;、销售数据&#xff08;销售额、销售量、销售渠道&#xff09;、财务报告&#xff08;营业收入、净利润、成本费用&#xff09;、市场分析&#xf…

Vulkan实战之验证层

文章目录 验证层是什么&#xff1f;使用验证层消息回调调试实例的创建和销毁测试配置最终代码 验证层是什么&#xff1f; Vulkan API是围绕最小化驱动程序开销的想法设计的&#xff0c;该目标的表现之一是默认情况下API中的错误检查非常有限。即使是像将枚举设置为不正确的值或…

STM32 系列 DAC的介绍与使用

STM32网上资料多&#xff0c;对自己来说基本的使用也是很简单的&#xff0c; 我的STM32专栏并没有什么系统的基础教学&#xff0c;基本上是某个项目用到了&#xff0c;或者产品使用过程出过问题 才会来记录一下&#xff0c;正好用到了 DAC &#xff0c;一般产品还用得不多&…

【Unity入门】23.简单物理系统

【Unity入门】简单物理系统 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;重力系统 &#xff08;1&#xff09;Rigidbody组件 Unity里面有提供符合我们常规认知的物理系统组件Physics&…

GDKOI 2023游记总结

不知觉就咕了1.5个月 在回忆 2021 年那个刚步入初中的懵懂孩童参加 GDOI 的惊喜中感慨初中时光的飞逝。 2021 GDOI 普及组游记 Day - ∞ \infty ∞ 去年因为疫情取消了&#xff0c;今年难得重新举办&#xff0c;珍惜每一次机会吧。 前年的地点订在深圳耀华学校&#xff0c;忘…

老外从神话原型中提取的12个品牌个性

老外从神话原型中提取的12个品牌个性 也是西方视角&#xff0c;需要本土化 参照心理学大师荣格的理论&#xff1a;心理学潜意识派 趣讲大白话&#xff1a;品牌的调调是啥 【趣讲信息科技151期】 **************************** 12种原型又归属于4种人性动机。 1、稳定&#xff0…

Python小姿势 - ## Python中的迭代器与生成器

Python中的迭代器与生成器 在Python中&#xff0c;迭代是一个非常重要的概念&#xff0c;迭代器和生成器是迭代的两种最常见的形式。那么&#xff0c;迭代器与生成器有何不同呢&#xff1f; 首先&#xff0c;我们先来了解一下迭代器。 迭代器是一种对象&#xff0c;它可以记住遍…

第二十八章 React脚手架配置代理

为了更好地理解如何在React应用程序中配置代理&#xff0c;我们需要先了解什么是代理。 代理是一种充当客户端和服务器之间中间人的服务器。当客户端向服务器发送请求时&#xff0c;代理服务器将接收请求并将其转发到服务器。服务器将响应发送回代理服务器&#xff0c;代理服务…

Spring:Bean的实例化(构造方法、静态工厂和实例化工厂)

三种方式&#xff0c;分别为构造方法、静态工厂和实例化工厂 新建Module项目&#xff0c;选择Maven&#xff0c;在pom.xml导入如下依赖&#xff1a; pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.o…

网络编程 总结二

一、TCP TCP模型 1. TCP搭建相关函数&#xff1a; 套接字Socket 1&#xff09;Socket函数&#xff1a; 2&#xff09;bind 3&#xff09;listen 4&#xff09;accept 5&#xff09;recv 注意&#xff1a; 1> TCP中的recv 可以替换成read&#xff1b; 2>TCP中的…

SpringBoot自定义注解

SpringBoot自定义注解 1. 创建一个注解的基本元素 修饰符&#xff1a;访问修饰符必须为public,不写默认为pubic&#xff1b; 关键字&#xff1a;关键字为interface&#xff1b; 注解名称&#xff1a;注解名称为自定义注解的名称 注解类型元素&#xff1a;注解类型元素是注解中…

Python---闭包,装饰器,设计模式之工厂模式

1. 闭包定义 定义双层嵌套函数&#xff0c; 内层函数可以访问外层函数的变量 将内存函数作为外层函数的返回&#xff0c;此内层函数就是闭包函数 2. 闭包的好处和缺点 优点&#xff1a;不定义全局变量&#xff0c;也可以让函数持续访问和修改一个外部变量 优点&#xff1a…

【数据分析之道-Matplotlib(一)】Matplotlib Pyplot

系列文章目录 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f44d;收藏&#x1f4c1;评论&#x1f4d2;关注…

Jetson nano之ROS入门- -ROS集成开发搭建与ROS通信学习笔记

文章目录 一、ROS集成开发环境搭建二、ROS通信机制和命令1. 话题通信2. 服务通信3. 参数服务4. ROS常用命令 三、Python实现ROS通信- - 控制和读取小乌龟状态1. 配置package.xml文件2. 配置CMakeLists.txt文件3. 编写Python代码4. 配置launch文件 总结 一、ROS集成开发环境搭建…

反射、枚举

反射的定义&#xff1a;Java的反射机制是在运行状态中&#xff0c;都能对任意的类拿到这个类的所有属性&#xff0c;从而对其进行相应的修改&#xff1b;用途&#xff1a;在日常第三方应用开发中&#xff0c;可以通过反射机制来获取某个类的私有成员变量或是方法&#xff1b;主…

研究生,但是一直摆烂——想办法解决

原因剖析 孤独因为没有朋友&#xff0c; 之前自己思维误区&#xff0c;总觉得好好学习好好锻炼变得优秀就会有朋友&#xff0c;其实不是这个样子的&#xff0c;即使自己一直内卷&#xff0c;但还是很孤独。 现在重新反思自己。 没有朋友因为&#xff1a; 1 外貌 2 聊天的情商…