mirror of
https://gitcode.com/JianFeeeee/TrulyMEM-TrueHumanMEM.git
synced 2026-09-20 17:08:18 +00:00
chore: 恢复build文件夹下的打包脚本
恢复在提交 87196fd 中误删的打包脚本文件:build_linux.sh, build_macos.sh, build_windows.bat, trulymem.spec
🤖 Generated with CodeArts Agent
This commit is contained in:
83
build/build_linux.sh
Executable file
83
build/build_linux.sh
Executable file
@ -0,0 +1,83 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "===== Building TrulyMEM for Linux ====="
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
|
||||||
|
echo "Project root: $PROJECT_ROOT"
|
||||||
|
|
||||||
|
if ! command -v python3 &> /dev/null; then
|
||||||
|
echo "Error: python3 not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建并激活虚拟环境
|
||||||
|
VENV_DIR="$PROJECT_ROOT/.venv_build"
|
||||||
|
|
||||||
|
echo "Creating virtual environment: $VENV_DIR"
|
||||||
|
python3 -m venv "$VENV_DIR"
|
||||||
|
|
||||||
|
echo "Activating virtual environment..."
|
||||||
|
source "$VENV_DIR/bin/activate"
|
||||||
|
|
||||||
|
echo "Upgrading pip in virtual environment..."
|
||||||
|
pip install --upgrade pip
|
||||||
|
|
||||||
|
echo "Installing dependencies in virtual environment..."
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
echo "Cleaning previous builds..."
|
||||||
|
rm -rf build/dist build/__pycache__ 2>/dev/null || true
|
||||||
|
|
||||||
|
echo "Running PyInstaller..."
|
||||||
|
python -m PyInstaller trulymem_entry.py \
|
||||||
|
--clean \
|
||||||
|
--onefile \
|
||||||
|
--console \
|
||||||
|
--name TrulyMEM \
|
||||||
|
--add-data "ui/styles:ui/styles" \
|
||||||
|
--add-data "core/prompts/templates:core/prompts/templates" \
|
||||||
|
--hidden-import textual \
|
||||||
|
--hidden-import textual.app \
|
||||||
|
--hidden-import textual.widgets \
|
||||||
|
--hidden-import textual.css \
|
||||||
|
--hidden-import openai \
|
||||||
|
--hidden-import openai._client \
|
||||||
|
--hidden-import neo4j \
|
||||||
|
--hidden-import sqlite3 \
|
||||||
|
--hidden-import core \
|
||||||
|
--hidden-import core.embedded_db \
|
||||||
|
--hidden-import core.graph_client \
|
||||||
|
--hidden-import core.tool_executor \
|
||||||
|
--hidden-import core.tool_limiter \
|
||||||
|
--hidden-import core.tools \
|
||||||
|
--hidden-import core.tools.memory_tools \
|
||||||
|
--hidden-import core.prompts \
|
||||||
|
--hidden-import core.prompts.prompt_manager \
|
||||||
|
--hidden-import ui \
|
||||||
|
--hidden-import ui.app \
|
||||||
|
--hidden-import ui.models \
|
||||||
|
--hidden-import ui.models.message \
|
||||||
|
--hidden-import ui.models.config \
|
||||||
|
--hidden-import ui.models.log_entry \
|
||||||
|
--hidden-import ui.widgets \
|
||||||
|
--hidden-import ui.handlers \
|
||||||
|
--hidden-import ui.services \
|
||||||
|
--hidden-import ui.services.config_manager \
|
||||||
|
--hidden-import ui.services.config_service \
|
||||||
|
--collect-all textual \
|
||||||
|
--noconfirm
|
||||||
|
|
||||||
|
echo "===== Build Complete ====="
|
||||||
|
echo "Binary: dist/TrulyMEM"
|
||||||
|
ls -la dist/
|
||||||
|
|
||||||
|
# 清理虚拟环境
|
||||||
|
echo "Cleaning up virtual environment..."
|
||||||
|
deactivate
|
||||||
|
rm -rf "$VENV_DIR"
|
||||||
|
|
||||||
|
echo "Build finished successfully!"
|
||||||
90
build/build_macos.sh
Normal file
90
build/build_macos.sh
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "===== Building TrulyMEM for macOS ====="
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
|
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
|
||||||
|
echo "Project root: $PROJECT_ROOT"
|
||||||
|
|
||||||
|
if ! command -v python3 &> /dev/null; then
|
||||||
|
echo "Error: python3 not found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建并激活虚拟环境
|
||||||
|
VENV_DIR="$PROJECT_ROOT/.venv_build"
|
||||||
|
|
||||||
|
echo "Creating virtual environment: $VENV_DIR"
|
||||||
|
python3 -m venv "$VENV_DIR"
|
||||||
|
|
||||||
|
echo "Activating virtual environment..."
|
||||||
|
source "$VENV_DIR/bin/activate"
|
||||||
|
|
||||||
|
echo "Upgrading pip in virtual environment..."
|
||||||
|
pip install --upgrade pip
|
||||||
|
|
||||||
|
echo "Installing dependencies in virtual environment..."
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
echo "Generating ICNS icon..."
|
||||||
|
if [ -d "pic/TrulyMEM.iconset" ]; then
|
||||||
|
iconutil -c icns pic/TrulyMEM.iconset -o pic/TrulyMEM.icns
|
||||||
|
echo "ICNS icon generated: pic/TrulyMEM.icns"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Cleaning previous builds..."
|
||||||
|
rm -rf build/dist build/__pycache__ 2>/dev/null || true
|
||||||
|
|
||||||
|
echo "Running PyInstaller..."
|
||||||
|
python -m PyInstaller trulymem_entry.py \
|
||||||
|
--clean \
|
||||||
|
--onefile \
|
||||||
|
--console \
|
||||||
|
--name TrulyMEM \
|
||||||
|
--icon "pic/TrulyMEM.icns" \
|
||||||
|
--add-data "ui/styles:ui/styles" \
|
||||||
|
--add-data "core/prompts/templates:core/prompts/templates" \
|
||||||
|
--hidden-import textual \
|
||||||
|
--hidden-import textual.app \
|
||||||
|
--hidden-import textual.widgets \
|
||||||
|
--hidden-import textual.css \
|
||||||
|
--hidden-import openai \
|
||||||
|
--hidden-import openai._client \
|
||||||
|
--hidden-import neo4j \
|
||||||
|
--hidden-import sqlite3 \
|
||||||
|
--hidden-import core \
|
||||||
|
--hidden-import core.embedded_db \
|
||||||
|
--hidden-import core.graph_client \
|
||||||
|
--hidden-import core.tool_executor \
|
||||||
|
--hidden-import core.tool_limiter \
|
||||||
|
--hidden-import core.tools \
|
||||||
|
--hidden-import core.tools.memory_tools \
|
||||||
|
--hidden-import core.prompts \
|
||||||
|
--hidden-import core.prompts.prompt_manager \
|
||||||
|
--hidden-import ui \
|
||||||
|
--hidden-import ui.app \
|
||||||
|
--hidden-import ui.models \
|
||||||
|
--hidden-import ui.models.message \
|
||||||
|
--hidden-import ui.models.config \
|
||||||
|
--hidden-import ui.models.log_entry \
|
||||||
|
--hidden-import ui.widgets \
|
||||||
|
--hidden-import ui.handlers \
|
||||||
|
--hidden-import ui.services \
|
||||||
|
--hidden-import ui.services.config_manager \
|
||||||
|
--hidden-import ui.services.config_service \
|
||||||
|
--collect-all textual \
|
||||||
|
--noconfirm
|
||||||
|
|
||||||
|
echo "===== Build Complete ====="
|
||||||
|
echo "Binary: dist/TrulyMEM"
|
||||||
|
ls -la dist/
|
||||||
|
|
||||||
|
# 清理虚拟环境
|
||||||
|
echo "Cleaning up virtual environment..."
|
||||||
|
deactivate
|
||||||
|
rm -rf "$VENV_DIR"
|
||||||
|
|
||||||
|
echo "Build finished successfully!"
|
||||||
60
build/build_windows.bat
Normal file
60
build/build_windows.bat
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
@echo off
|
||||||
|
echo ===== Building TrulyMEM for Windows =====
|
||||||
|
|
||||||
|
REM 切换到脚本所在目录的上一级目录(项目根目录)
|
||||||
|
cd /d "%~dp0.."
|
||||||
|
echo Project root: %CD%
|
||||||
|
|
||||||
|
python --version >nul 2>&1
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Error: python not found
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo Installing dependencies...
|
||||||
|
pip install -r requirements.txt
|
||||||
|
|
||||||
|
echo Running PyInstaller...
|
||||||
|
python -m PyInstaller trulymem_entry.py ^
|
||||||
|
--clean ^
|
||||||
|
--onefile ^
|
||||||
|
--console ^
|
||||||
|
--name TrulyMEM ^
|
||||||
|
--icon "pic/TrulyMEM.ico" ^
|
||||||
|
--add-data "ui/styles;ui/styles" ^
|
||||||
|
--add-data "core/prompts/templates;core/prompts/templates" ^
|
||||||
|
--hidden-import textual ^
|
||||||
|
--hidden-import textual.app ^
|
||||||
|
--hidden-import textual.widgets ^
|
||||||
|
--hidden-import textual.css ^
|
||||||
|
--hidden-import openai ^
|
||||||
|
--hidden-import openai._client ^
|
||||||
|
--hidden-import neo4j ^
|
||||||
|
--hidden-import sqlite3 ^
|
||||||
|
--hidden-import core ^
|
||||||
|
--hidden-import core.embedded_db ^
|
||||||
|
--hidden-import core.graph_client ^
|
||||||
|
--hidden-import core.tool_executor ^
|
||||||
|
--hidden-import core.tool_limiter ^
|
||||||
|
--hidden-import core.tools ^
|
||||||
|
--hidden-import core.tools.memory_tools ^
|
||||||
|
--hidden-import core.prompts ^
|
||||||
|
--hidden-import core.prompts.prompt_manager ^
|
||||||
|
--hidden-import ui ^
|
||||||
|
--hidden-import ui.app ^
|
||||||
|
--hidden-import ui.models ^
|
||||||
|
--hidden-import ui.models.message ^
|
||||||
|
--hidden-import ui.models.config ^
|
||||||
|
--hidden-import ui.models.log_entry ^
|
||||||
|
--hidden-import ui.widgets ^
|
||||||
|
--hidden-import ui.handlers ^
|
||||||
|
--hidden-import ui.services ^
|
||||||
|
--hidden-import ui.services.config_manager ^
|
||||||
|
--hidden-import ui.services.config_service ^
|
||||||
|
--collect-all textual ^
|
||||||
|
--noconfirm
|
||||||
|
|
||||||
|
echo ===== Build Complete =====
|
||||||
|
echo Binary: dist\TrulyMEM.exe
|
||||||
|
dir dist\TrulyMEM.exe
|
||||||
|
pause
|
||||||
92
build/trulymem.spec
Normal file
92
build/trulymem.spec
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
# -*- mode: python ; coding: utf-8 -*-
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
block_cipher = None
|
||||||
|
|
||||||
|
project_root = os.path.dirname(os.path.abspath(SPEC))
|
||||||
|
sys.path.insert(0, project_root)
|
||||||
|
|
||||||
|
datas = []
|
||||||
|
if os.path.exists(os.path.join(project_root, 'ui', 'styles')):
|
||||||
|
for root, dirs, files in os.walk(os.path.join(project_root, 'ui', 'styles')):
|
||||||
|
for f in files:
|
||||||
|
src = os.path.join(root, f)
|
||||||
|
dst = os.path.join('ui', 'styles', os.path.relpath(src, os.path.join(project_root, 'ui', 'styles')))
|
||||||
|
datas.append((src, dst))
|
||||||
|
|
||||||
|
if os.path.exists(os.path.join(project_root, 'core', 'prompts', 'templates')):
|
||||||
|
for root, dirs, files in os.walk(os.path.join(project_root, 'core', 'prompts', 'templates')):
|
||||||
|
for f in files:
|
||||||
|
src = os.path.join(root, f)
|
||||||
|
dst = os.path.join('core', 'prompts', 'templates', os.path.relpath(src, os.path.join(project_root, 'core', 'prompts', 'templates')))
|
||||||
|
datas.append((src, dst))
|
||||||
|
|
||||||
|
a = Analysis(
|
||||||
|
['trulymem_entry.py'],
|
||||||
|
pathex=[],
|
||||||
|
binaries=[],
|
||||||
|
datas=datas,
|
||||||
|
hiddenimports=[
|
||||||
|
'textual',
|
||||||
|
'textual.app',
|
||||||
|
'textual.widgets',
|
||||||
|
'textual.css',
|
||||||
|
'openai',
|
||||||
|
'openai._client',
|
||||||
|
'neo4j',
|
||||||
|
'sqlite3',
|
||||||
|
'graph_memory_tui',
|
||||||
|
'core',
|
||||||
|
'core.embedded_db',
|
||||||
|
'core.graph_client',
|
||||||
|
'core.tool_executor',
|
||||||
|
'core.tool_limiter',
|
||||||
|
'core.tools',
|
||||||
|
'core.tools.memory_tools',
|
||||||
|
'core.prompts',
|
||||||
|
'core.prompts.prompt_manager',
|
||||||
|
'ui',
|
||||||
|
'ui.app',
|
||||||
|
'ui.models',
|
||||||
|
'ui.models.message',
|
||||||
|
'ui.models.config',
|
||||||
|
'ui.models.log_entry',
|
||||||
|
'ui.widgets',
|
||||||
|
'ui.widgets.left_panel',
|
||||||
|
'ui.widgets.right_panel',
|
||||||
|
'ui.widgets.input_box',
|
||||||
|
'ui.widgets.message_history',
|
||||||
|
'ui.widgets.status_bar',
|
||||||
|
'ui.handlers',
|
||||||
|
'ui.services',
|
||||||
|
'ui.services.config_manager',
|
||||||
|
],
|
||||||
|
hookspath=[],
|
||||||
|
hooksconfig={},
|
||||||
|
runtime_hooks=[],
|
||||||
|
excludes=[],
|
||||||
|
noarchive=False,
|
||||||
|
optimize=0,
|
||||||
|
)
|
||||||
|
pyz = PYZ(a.pure, block_cipher)
|
||||||
|
exe = EXE(
|
||||||
|
pyz,
|
||||||
|
a.scripts,
|
||||||
|
a.binaries,
|
||||||
|
a.datas,
|
||||||
|
[],
|
||||||
|
name='TrulyMEM',
|
||||||
|
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,
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user