Python一些常用的工具

1.Python切换镜像源

清华源

pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/simple
  • 官方:https://pypi.python.org/pypi
  • 豆瓣:https://pypi.doubanio.com/simple/
  • 阿里:http://mirrors.aliyun.com/pypi/simple/
  • 中科大:https://mirrors.ustc.edu.cn/pypi/web/simple/
  • 清华:https://pypi.tuna.tsinghua.edu.cn/simple/

2.Python创建虚拟环境

2.1生成项目所需要的依赖

pip freeze > requirements.txt

2.2 虚拟环境

2.2.1创建虚拟环境:

python -m venv myenv

2.2.2 激活虚拟环境

myenv\Scripts\activate

3.Python项目打包

3.1 Pyinstaller模块的安装

pip install pyinstaller

3.2 Pyinstaller模块的使用

pyinstaller [选项] Pyhton脚本 
例如 
pyinstaller -F main.py 
选项 意义
-h 查看该模块的帮助信息,会罗列出所有选项以供查询,例如 pyinstaller -h
-v 查看该模块的版本信息,会显示该模块的版本号,例如 pyinstaller -v
-F 生成单个的可执行文件,例如 pyinstaller -F Python源文件
-D 创建一个包含可执行文件的单文件夹捆绑包(默认),例如 pyinstaller -D Python源文件
-n 指定项目(产生的 spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为 spec 的名字
-d 产生 debug 版本的可执行文件
-w 指定程序运行时不显示命令行窗口(仅对 Windows 有效)
-c 指定使用命令行窗口运行程序(仅对 Windows 有效)
-o 指定 spec 文件的生成目录。如果没有指定,则默认使用当前目录来生成 spec 文件

以上命令运行完成后,所在目录会生成一个build目录,包括所有的编译脚本;一个 dist 目录,包含整个项目的打包结果;还会有一个windowdemo.spec 文件,这是一个规格文件,PyInstaller 通过执行 spec 文件的内容来构建应用程序。

3.3 spec资源文件介绍

# -*- mode: python ; coding: utf-8 -*-

a = Analysis(
    ['DY.py'], # 打包主文件
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='DY',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=True,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
)

3.3.1 Analysis参数

参数 含义
scripts 也是第一个参数,它是一个脚本列表,可以传入多个py脚本,效果与命令行中指定多py文件相同,即py文件不止一个时,比如“pyinstaller xxx1.py xxx2.py”,pyinstaller会依次分析并执行,并把第一个py名称作为spec和dist文件下的文件夹和程序的名称。 main文件入口,或者你执行文件的时候要执行多少个python文件,那就写几个,比如pyinstaller hello.py hello2.py,会依次去执行
pathex 默认有一个spec的目录,当我们的一些模块不在这个路径下,记得把用到的模块的路径添加到这个list变量里。同命令“-p DIR/–paths DIR”. 意思是项目需要从什么地方导入自定义库
datas 项目需要用到什么数据,比如图片,视频等。里面格式为tuple,第一个参数是文件路径,第二个是打包后所在的路径。 作用是将本地文件打包时拷贝到目标路径下。datas是一个元素为元组的列表,每个元组有两个元素,都必须是字符串类型,元组的第一个元素为数据文件或文件夹,元组的第二个元素为运行时这些文件或文件夹的位置。例如:datas=[(’./src/a.txt’, ‘./dst’)],表示打包时将"./src/a.txt"文件添加(copy)到相对于exe目录下的dst目录中。也可以使用通配符:datas= [ (’/mygame/sfx/*.mp3’, ‘sfx’ ) ],表示将/mygame/sfx/目录下的所有.mp3文件都copy到sfx文件夹中。也可以添加整个文件夹:datas= [ (’/mygame/data’, ‘data’ ) ],表示将/mygame/data文件夹下所有的文件都copy到data文件夹下。同命令“–add-data”。
binaries 添加二进制文件,也是一个列表,定义方式与datas参数一样。没具体使用过。同命令“–add-binary”。
hiddenimports 指定脚本中需要隐式导入的模块,比如在__import__、imp.find_module()、exec、eval等语句中导入的模块,这些模块PyInstaller是找不到的,需要手动指定导入,这个选项可以使用多次。同命令“–hidden-import MODULENAME/–hiddenimport MODULENAME”。项目需要用到什么数据,比如图片,视频等。里面格式为tuple,第一个参数是文件路径,第二个是打包后所在的路径。
hookspath 指定额外hook文件(可以是py文件)的查找路径,这些文件的作用是在PyInstaller运行时改变一些Python或者其他库原有的函数或者变量的执行逻辑(并不会改变这些库本身的代码),以便能顺利的打包完成,这个选项可以使用多次。同命令“–additional-hooks-dir HOOKSPATH”。
runtime_hooks 指定自定义的运行时hook文件路径(可以是py文件),在打好包的exe程序中,在运行这个exe程序时,指定的hook文件会在所有代码和模块之前运行,包括main文件,以满足一些运行环境的特殊要求,这个选项可以使用多次。同命令“–runtime-hook RUNTIME_HOOKS”。
excludes 指定可以被忽略的可选的模块或包,因为某些模块只是PyInstaller根据自身的逻辑去查找的,这些模块对于exe程序本身并没有用到,但是在日志中还是会提示“module not found”,这种日志可以不用管,或者使用这个参数选项来指定不用导入,这个选项可以使用多次。同命令“–exclude-module EXCLUDES”。假如你用的python有很多库,但是你不需要用到某个,那么就把它添加到里面去,比如很多人没有用到PyQt5, pandas, excludes=[‘PyQt5’]

3.3.2 exe参数

参数 含义
console 设置是否显示命令行窗口,同命令-w/-c。
icon 设置程序图标,默认spec是没有的,需要手动添加,参数值就是图片路径的字符串。同命令“命令-i/–icon”。
posted @ 2024-07-15 10:12  Van-kai  阅读(29)  评论(0)    收藏  举报