注意:
虚拟环境依赖包(打包成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多文件打包



3.2单文件打包
pyinstaller -F xxxxxxx.py


pyinstaller -F app.py -n bb
3.3 路径问题
为什么报错呢?
运行单文件打包的,会解压到电脑的临时目录(具体报错如下)

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文件给覆盖掉,)

运行成功
