glowpath/backend/glowpath-backend.spec

155 lines
3.6 KiB
Python

# -*- mode: python ; coding: utf-8 -*-
from PyInstaller.utils.hooks import collect_all, collect_data_files, collect_submodules
import os
import sys
# Collect all open-webui files and dependencies
datas = []
binaries = []
hiddenimports = []
# Collect open-webui and its dependencies
tmp_ret = collect_all('open_webui')
datas += tmp_ret[0]
binaries += tmp_ret[1]
hiddenimports += tmp_ret[2]
# Collect additional packages that might have data files or hidden imports
additional_packages = [
'bcrypt',
'cryptography',
'passlib',
'fastapi',
'uvicorn',
'pydantic',
'sqlalchemy',
'alembic',
'jinja2',
'aiofiles',
'python_multipart',
'httpx',
'requests',
'websockets',
'sse_starlette',
'chromadb',
'sentence_transformers',
'transformers',
'torch',
'numpy',
'sklearn',
'scipy',
'tokenizers',
'huggingface_hub',
]
for package in additional_packages:
try:
tmp_ret = collect_all(package)
datas += tmp_ret[0]
binaries += tmp_ret[1]
hiddenimports += tmp_ret[2]
except ImportError:
print(f"Warning: Package {package} not found, skipping...")
# Additional hidden imports that might be needed
hiddenimports += [
'uvicorn.main',
'uvicorn.protocols.http.auto',
'uvicorn.protocols.websockets.auto',
'uvicorn.lifespan.on',
'uvicorn.loops.auto',
'uvicorn.logging',
'fastapi.middleware.cors',
'fastapi.responses',
'passlib.handlers.bcrypt',
'passlib.handlers.pbkdf2',
'cryptography.hazmat.backends.openssl',
'sqlalchemy.dialects.sqlite',
'sqlalchemy.pool',
'alembic.runtime.migration',
'email_validator',
'chromadb.utils.embedding_functions.onnx_mini_lm_l6_v2',
'chromadb.utils.embedding_functions',
'chromadb.config',
'chromadb.db',
'chromadb.db.impl',
'onnxruntime',
# Sentence transformers specific imports
'sentence_transformers.models.Transformer',
'sentence_transformers.models.Pooling',
'sentence_transformers.models.Normalize',
'sentence_transformers.cross_encoder',
'sentence_transformers.util',
'sentence_transformers.evaluation',
'transformers.models.auto.modeling_auto',
'transformers.models.auto.tokenization_auto',
'transformers.models.auto.configuration_auto',
'transformers.models.bert',
'transformers.models.distilbert',
'transformers.models.roberta',
'transformers.models.mpnet',
'torch._C',
'torch.nn.functional',
'torch.utils.data',
'sklearn.metrics.pairwise',
'sklearn.feature_extraction.text',
'numpy.core._methods',
'numpy.lib.format',
]
# Include SSL certificates
import ssl
ssl_paths = ssl.get_default_verify_paths()
if ssl_paths.cafile:
datas.append((ssl_paths.cafile, 'certifi'))
a = Analysis(
['main.py'],
pathex=[],
binaries=binaries,
datas=datas,
hiddenimports=hiddenimports,
hookspath=['hooks'],
hooksconfig={},
runtime_hooks=[],
excludes=[
'tkinter',
'matplotlib',
'IPython',
'jupyter',
'notebook',
'test',
'tests',
],
noarchive=False,
optimize=0,
)
# Remove duplicate entries
a.datas = list(set(a.datas))
a.binaries = list(set(a.binaries))
pyz = PYZ(a.pure)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='glowpath-backend',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=None,
)