-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathvisionscript.spec
More file actions
109 lines (95 loc) · 2.7 KB
/
Copy pathvisionscript.spec
File metadata and controls
109 lines (95 loc) · 2.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# -*- mode: python ; coding: utf-8 -*-
# PyInstaller 配置:在仓库根目录执行: pyinstaller visionscript.spec
# 输出: dist/VisionScript.exe(单文件)
import os
import sys
from pathlib import Path
block_cipher = None
_root = Path(os.path.abspath(os.path.dirname(SPEC)))
def _patch_pyinstaller_skip_crashing_dll_probe_imports():
"""Windows:PyInstaller 在隔离进程中对部分包执行 import 以收集 DLL 搜索路径;
datasets / modelscope.msdatasets 可能触发访问冲突并中止打包(无 exe)。"""
if sys.platform != "win32":
return
import PyInstaller.building.build_main as bm
_orig = bm.find_binary_dependencies
def _filtered(binaries, import_packages, symlink_suppression_patterns):
keep = []
for pkg in import_packages:
if pkg == "datasets" or pkg.startswith("modelscope.msdatasets"):
continue
keep.append(pkg)
return _orig(binaries, keep, symlink_suppression_patterns)
bm.find_binary_dependencies = _filtered
_patch_pyinstaller_skip_crashing_dll_probe_imports()
datas = [
(str(_root / "config" / "config.json"), "config"),
(str(_root / "static"), "static"),
(str(_root / "scripts"), "scripts"),
]
try:
from PyInstaller.utils.hooks import collect_data_files
datas += collect_data_files("qtawesome")
except Exception:
pass
hiddenimports = [
"pynput.keyboard._win32",
"pynput.mouse._win32",
"win32timezone",
"win32api",
"win32con",
"win32event",
"win32file",
"win32gui",
"win32process",
"win32ui",
"pythoncom",
"pywintypes",
"PIL",
"PIL._imagingtk",
"cv2",
"onnxruntime",
"skimage",
"shapely",
"lmdb",
"onnx",
"qtawesome",
]
a = Analysis(
[str(_root / "main.py")],
pathex=[str(_root)],
binaries=[],
datas=datas,
hiddenimports=hiddenimports,
hookspath=[],
hooksconfig={},
runtime_hooks=[],
# datasets / modelscope.msdatasets:依赖分析与 DLL 探测阶段可能在 Windows 上崩溃;推理/OCR 可不打包。
excludes=["datasets", "modelscope.msdatasets"],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name="VisionScript",
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=str(_root / "static" / "icon.ico"),
version=str(_root / "visionscript_version_info.txt"),
)