rscder-pub/build.py
2023-07-29 16:30:37 +08:00

194 lines
9.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 + "/lib/"
if os.path.exists(gen):
shutil.rmtree(gen)
if os.path.exists(gen + '../DLLs'):
shutil.rmtree(gen + '../DLLs')
os.makedirs(gen, exist_ok=True)
shutil.copytree(Python_path + "DLLs", gen + "../DLLs")
# 解决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")
shutil.copytree(Python_path + "Lib/urllib", gen + "urllib")
# 解决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")
shutil.copytree(Python_path + "Lib/site-packages/PyQtAds", gen + "PyQtAds")
# 解决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)