88 lines
2.2 KiB
Python
88 lines
2.2 KiB
Python
|
|
import os
|
||
|
|
from pathlib import Path
|
||
|
|
from shutil import copy, copytree
|
||
|
|
from distutils.sysconfig import get_python_lib
|
||
|
|
|
||
|
|
# 1. activate virtual environment
|
||
|
|
# $ conda activate YOUR_ENV_NAME
|
||
|
|
#
|
||
|
|
# 2. run deploy script
|
||
|
|
# $ python 编译.py
|
||
|
|
|
||
|
|
args = [
|
||
|
|
"nuitka",
|
||
|
|
"--standalone",
|
||
|
|
"--assume-yes-for-downloads",
|
||
|
|
"--mingw64",
|
||
|
|
"--windows-icon-from-ico=C:/Users/Administrator/AppData/Local/Temp/icon.ico",
|
||
|
|
"--nofollow-import-to=numpy,scipy,PIL,colorthief",
|
||
|
|
"--enable-plugins=PyQt6",
|
||
|
|
"--show-progress",
|
||
|
|
"--show-memory",
|
||
|
|
"--disable-console",
|
||
|
|
"--output-dir=G:/meowMebulaDiskRefactor/build",
|
||
|
|
"G:/meowMebulaDiskRefactor/main.py",
|
||
|
|
]
|
||
|
|
|
||
|
|
dist_folder = Path("G:/meowMebulaDiskRefactor/build/main.dist")
|
||
|
|
|
||
|
|
copied_site_packages = [
|
||
|
|
"scipy",
|
||
|
|
"numpy",
|
||
|
|
"numpy.libs",
|
||
|
|
"scipy.libs",
|
||
|
|
"PIL",
|
||
|
|
"colorthief.py",
|
||
|
|
"certifi", # Add certifi to the list of copied site-packages
|
||
|
|
]
|
||
|
|
|
||
|
|
copied_standard_packages = [
|
||
|
|
"random.py",
|
||
|
|
"hmac.py",
|
||
|
|
"hashlib.py",
|
||
|
|
"uuid.py",
|
||
|
|
"ctypes",
|
||
|
|
"secrets.py",
|
||
|
|
"importlib/resources.py", # Add importlib.resources to the list of copied standard packages
|
||
|
|
]
|
||
|
|
|
||
|
|
# Ensure importlib.resources is included in the Nuitka build
|
||
|
|
args.append("--include-module=importlib.resources")
|
||
|
|
|
||
|
|
# run nuitka
|
||
|
|
# https://blog.csdn.net/qq_25262697/article/details/129302819
|
||
|
|
# https://www.cnblogs.com/happylee666/articles/16158458.html
|
||
|
|
os.system(" ".join(args))
|
||
|
|
|
||
|
|
# copy site-packages to dist folder
|
||
|
|
site_packages = Path(get_python_lib())
|
||
|
|
|
||
|
|
for src in copied_site_packages:
|
||
|
|
src = site_packages / src
|
||
|
|
dist = dist_folder / src.name
|
||
|
|
|
||
|
|
print(f"Coping site-packages `{src}` to `{dist}`")
|
||
|
|
|
||
|
|
try:
|
||
|
|
if src.is_file():
|
||
|
|
copy(src, dist)
|
||
|
|
else:
|
||
|
|
copytree(src, dist)
|
||
|
|
except Exception as e:
|
||
|
|
print(f"Failed to copy `{src}`: {e}")
|
||
|
|
|
||
|
|
# copy standard library
|
||
|
|
for file in copied_standard_packages:
|
||
|
|
src = site_packages.parent / file
|
||
|
|
dist = dist_folder / src.name
|
||
|
|
|
||
|
|
print(f"Coping stand library `{src}` to `{dist}`")
|
||
|
|
|
||
|
|
try:
|
||
|
|
if src.is_file():
|
||
|
|
copy(src, dist)
|
||
|
|
else:
|
||
|
|
copytree(src, dist)
|
||
|
|
except Exception as e:
|
||
|
|
print(f"Failed to copy `{src}`: {e}")
|