快速构建

This commit is contained in:
copper 2023-07-29 15:10:22 +08:00
parent bf7f7f0bca
commit 2abab4324f

182
build.py Normal file
View File

@ -0,0 +1,182 @@
import os
import shutil
import sys
# 写python的安装根目录
Python_path = os.path.dirname(sys.executable) + '/'
# 输出文件夹路径
Out = "install/build"
# 图标
Ico = "logo.ico"
# 程序入口py文件
main_py = "ECD.py"
# 编译后文件夹位置(无需修改)
dist_path = os.path.join(Out, main_py.split(".")[0] + ".dist")
# print(dist_path)
def __main(main : str):
parameters = [
'--standalone', # 构建独立软件也就是将于系统有关的运行库和Python运行时打包
'--show-progress', # 展示打包过程
'--show-memory', # 打印打包时的内存占用
'--nofollow-imports', # 不打包import语句导入的包因为nuitka自动导入的库有问题后面我们会手动导入这样成功率更高
'--follow-import-to=common', # 需要编译成C/C++的py文件夹命名
'--plugin-enable=pylint-warnings',
'--plugin-enable=pyqt5',
'--plugin-enable=qt-plugins',
'--include-package=qgis,skimage,torch,torchvision',
'--include-qt-plugins=all',
# '--plugin-enable=numpy',
'--output-dir='+ Out, # 存放构建结果的文件夹
'--windows-icon-from-ico=' + Ico
]
# param_str = " ".join(parameters)
# command = "nuitka {} {}".format(param_str, main)
command = '''
nuitka --standalone --show-progress --show-memory --include-package=qgis,skimage,torch,torchvision,rscder,urllib --plugin-enable=pylint-warnings --enable-plugin=pyqt5 --windows-icon-from-ico=logo.ico --enable-plugin=tk-inter --nofollow-import-to=mock,pywt,scipy,skimage,torch,torchvision,osgeo,Crypto,numpy,yaml,typing,sklearn,joblib,asyncio,*.test,rscder --include-qt-plugins=all --plugin-enable=numpy --noinclude-unittest-mode=nofollow --output-dir=install/build --include-data-dir=icons=icons --noinclude-dask-mode=nofollow --include-data-dir=test-data=test-data ECD.py
'''
os.system(command)
# 替换文件
def replace_image(path):
shutil.copytree('icons', path)
# 替换文件
def replace_openpyxl(path):
shutil.copyfile("replace/_openpyxl.py", path)
def package(dist_path):
gen = dist_path + "/"
# 解决win32con模块丢失
shutil.copy(Python_path + "Lib/site-packages/win32/lib/win32con.py", gen + "win32con.py")
# 解决pymysql模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/pymysql", gen + "pymysql")
# 解决redis模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/redis", gen + "redis")
# 解决pandas模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/pandas", gen + "pandas")
# 解决numpy模块丢失
shutil.copytree(Python_path + "Lib/site-packages/numpy", gen + "numpy")
# 解决pytz模块丢失
shutil.copytree(Python_path + "Lib/site-packages/pytz", gen + "pytz")
# 解决dateutil模块丢失
shutil.copytree(Python_path + "Lib/site-packages/dateutil", gen + "dateutil")
# 解决six模块丢失
shutil.copy(Python_path + "Lib/site-packages/six.py", gen + "six.py")
# 解决pyautogui模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/pyautogui", gen + "pyautogui")
# 解决pyperclip模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/pyperclip", gen + "pyperclip")
# 解决paddleocr模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/paddleocr", gen + "paddleocr")
# 解决cv2模块丢失
shutil.copytree(Python_path + "Lib/site-packages/cv2", gen + "cv2")
# # 解决requests模块丢失
shutil.copytree(Python_path + "Lib/site-packages/requests", gen + "requests")
# 解决urllib3模块丢失
shutil.copytree(Python_path + "Lib/site-packages/urllib3", gen + "urllib3")
# 解决chardet模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/chardet", gen + "chardet")
# 解决certifi模块丢失
shutil.copytree(Python_path + "Lib/site-packages/certifi", gen + "certifi")
# 解决idna模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/idna", gen + "idna")
# 解决tqdm模块丢失
shutil.copytree(Python_path + "Lib/site-packages/tqdm", gen + "tqdm")
# 解决torch模块丢失
shutil.copytree(Python_path + "Lib/site-packages/torch", gen + "torch")
shutil.copytree(Python_path + "Lib/site-packages/torchvision", gen + "torchvison")
# 解决decorator模块丢失
shutil.copy(Python_path + "Lib/site-packages/decorator.py", gen + "decorator.py")
# 解决google模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/google", gen + "google")
# 解决PIL模块丢失
shutil.copytree(Python_path + "Lib/site-packages/PIL", gen + "PIL")
# 解决setuptools模块丢失
shutil.copytree(Python_path + "Lib/site-packages/setuptools", gen + "setuptools")
# 解决pkg_resources模块丢失
shutil.copytree(Python_path + "Lib/site-packages/pkg_resources", gen + "pkg_resources")
# 解决gast模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/gast", gen + "gast")
# 解决astor模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/astor", gen + "astor")
# replace_image(gen + "icons")
# 解决_openpyxl.py模块的问题
# replace_openpyxl(gen + "pandas/io/excel/_openpyxl.py")
# 解决imgaug模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/imgaug", gen + "imgaug")
# 解决imageio模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/imageio", gen + "imageio")
# 解决skimage模块丢失
shutil.copytree(Python_path + "Lib/site-packages/skimage", gen + "skimage")
# 解决scipy模块丢失
shutil.copytree(Python_path + "Lib/site-packages/scipy", gen + "scipy")
# 解决pywt模块丢失
shutil.copytree(Python_path + "Lib/site-packages/pywt", gen + "pywt")
# 解决shapely模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/shapely", gen + "shapely")
# 解决pyclipper模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/pyclipper", gen + "pyclipper")
# 解决websockets模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/websockets", gen + "websockets")
# 解决paddlex模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/paddlex", gen + "paddlex")
# 解决colorama模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/colorama", gen + "colorama")
# 解决filelock.py模块丢失
# shutil.copy(Python_path + "Lib/site-packages/filelock.py", gen + "filelock.py")
# 解决yaml模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/yaml", gen + "yaml")
# 解决paddleslim模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/paddleslim", gen + "paddleslim")
# 解决zmq模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/zmq", gen + "zmq")
# 解决pyzmq.libs模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/pyzmq.libs", gen + "pyzmq.libs")
# 解决matplotlib模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/matplotlib", gen + "matplotlib")
# 解决pyparsing.py模块丢失
shutil.copy(Python_path + "Lib/site-packages/pyparsing.py", gen + "pyparsing.py")
# 解决cycler.py模块丢失
shutil.copy(Python_path + "Lib/site-packages/cycler.py", gen + "cycler.py")
# 解决kiwisolver模块丢失
# shutil.copy(Python_path + "Lib/site-packages/kiwisolver.cp37-win_amd64.pyd", gen + "kiwisolver.cp37-win_amd64.pyd")
# 解决mpl_toolkits模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/mpl_toolkits", gen + "mpl_toolkits")
# 解决sklearn模块丢失
shutil.copytree(Python_path + "Lib/site-packages/sklearn", gen + "sklearn")
# 解决joblib模块丢失
shutil.copytree(Python_path + "Lib/site-packages/joblib", gen + "joblib")
# 解决pycocotools模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/pycocotools", gen + "pycocotools")
# 解决lap模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/lap", gen + "lap")
# 解决glob2模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/glob2", gen + "glob2")
# 解决openpyxl模块丢失
shutil.copytree(Python_path + "Lib/site-packages/openpyxl", gen + "openpyxl")
# 解决et_xmlfile模块丢失
shutil.copytree(Python_path + "Lib/site-packages/et_xmlfile", gen + "et_xmlfile")
# # 解决psutil模块丢失
# shutil.copytree(Python_path + "Lib/site-packages/psutil", gen + "psutil")
# 解决配置文件
# shutil.copy("config.ini", gen + "config.ini")
# # 解决模型
# shutil.copytree("model_", gen + "model_")
# 解决图片
shutil.copytree("icons", gen + "icons")
# 创建log文件夹
# os.mkdir(gen+"log")
# __main(main_py)
package(dist_path)