作者:email_osoo_240 | 来源:互联网 | 2023-08-27 11:57
本文主要介绍关于python,numpy,开发语言的知识点,对【pyinstaller打包教程及问题处理】和【pyinstaller打包技巧】有兴趣的朋友可以看下由【山顶一松柏】投稿的技术文章,希望该
本文主要介绍关于python,numpy,开发语言的知识点,对【pyinstaller打包教程及问题处理】和【pyinstaller打包技巧】有兴趣的朋友可以看下由【山顶一松柏】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的python相关技术问题。
pyinstaller打包技巧
exe打包
注意:
虚拟环境依赖包(打包成requirements.txt):
pip install -r requirements.txt
安装项目依赖 pip install requirements.txt
环境准备 安装虚拟环境
pip install pyinstaller
pyinstaller -F xxxxxxx.py
生成xx.exe
Requirements.txt:
altgraph==0.17.2
future==0.18.2
pefile==2022.5.30
pyinstaller==5.2
pyinstaller-hooks-cOntrib==2022.8
pywin32-ctypes==0.2.0
打包
3.1多文件打包
调试,在终端输入app.exe回车,可以看到报错(不是双击运行)
3.2单文件打包
pyinstaller -F xxxxxxx.py
3.2.1打包的名称:
pyinstaller -F app.py -n bb
3.3 路径问题
3.3.1 多文件打包,不会报错
3.3.2 单文件打包,报错
为什么报错呢?
运行单文件打包的,会解压到电脑的临时目录(具体报错如下)
3.3.1 sys.argv (当前文件执行所在目录文件)
import sys
print(sys.argv)
print(sys.argv[0])
执行返回:
['C:/Users/DELL/PycharmProjects/pyinstaller-g/demo.py']
C:/Users/DELL/PycharmProjects/pyinstaller-g/demo.py
执行文件(只有文件):
import sys,os
#找到真正的路径
print(os.path.realpath(sys.argv[0]))
print(sys.argv)
运行:
区别如下:
import time,os,sys
# BASE_DIR =os.path.dirname(os.path.abspath(__file__))
BASE_DIR = os.path.dirname(os.path.realpath(sys.argv[0]))
print(BASE_DIR)
print("环境使用xxxx系统")
path = os.path.join(BASE_DIR,"account.txt")
with open(path,"r",encoding="utf-8") as file:
data = file.read().strip()
print(data)
time.sleep(5)
3.4 模块导入问题
满足要求
但是,如何遇到动态导入模块的代码,他是无法找到关联包
import time,sys
import importlib
print("=================欢迎使用xxx系统===================")
card = importlib.import_module("utils.card")
v1 = card.get_number()
print(v1)
time.sleep(5)
动态导入报错:
手动写入要导入的包(在bb.spec文件里)
打包命令:
报错:
-F要去掉
pyinstaller bb.spec(原来的打包命令会把spec文件给覆盖掉,)
运行成功
本文《pyinstaller打包教程及问题处理》版权归山顶一松柏所有,引用pyinstaller打包教程及问题处理需遵循CC 4.0 BY-SA版权协议。