mirror of
https://github.com/tcsenpai/pensieve.git
synced 2025-06-02 17:30:08 +00:00
added quick setup & start for linux
This commit is contained in:
parent
36af2346c8
commit
c34b6da14d
55
environment.yml
Normal file
55
environment.yml
Normal file
@ -0,0 +1,55 @@
|
||||
name: memos
|
||||
channels:
|
||||
- defaults
|
||||
dependencies:
|
||||
- _libgcc_mutex=0.1=main
|
||||
- _openmp_mutex=5.1=1_gnu
|
||||
- bzip2=1.0.8=h5eee18b_6
|
||||
- ca-certificates=2024.9.24=h06a4308_0
|
||||
- ld_impl_linux-64=2.40=h12ee557_0
|
||||
- libffi=3.4.4=h6a678d5_1
|
||||
- libgcc-ng=11.2.0=h1234567_1
|
||||
- libgomp=11.2.0=h1234567_1
|
||||
- libstdcxx-ng=11.2.0=h1234567_1
|
||||
- libuuid=1.41.5=h5eee18b_0
|
||||
- ncurses=6.4=h6a678d5_0
|
||||
- openssl=3.0.15=h5eee18b_0
|
||||
- pip=24.2=py310h06a4308_0
|
||||
- python=3.10.15=he870216_1
|
||||
- readline=8.2=h5eee18b_0
|
||||
- setuptools=75.1.0=py310h06a4308_0
|
||||
- sqlite=3.45.3=h5eee18b_0
|
||||
- tk=8.6.14=h39e8969_0
|
||||
- tzdata=2024b=h04d1e81_0
|
||||
- wheel=0.44.0=py310h06a4308_0
|
||||
- xz=5.4.6=h5eee18b_1
|
||||
- zlib=1.2.13=h5eee18b_1
|
||||
- pip:
|
||||
- certifi==2024.8.30
|
||||
- colorama==0.4.6
|
||||
- coloredlogs==15.0.1
|
||||
- dbus-python==1.3.2
|
||||
- einops==0.8.0
|
||||
- fastapi==0.115.5
|
||||
- humanfriendly==10.0
|
||||
- imagehash==4.3.1
|
||||
- magika==0.5.1
|
||||
- memos==0.18.7
|
||||
- modelscope==1.20.1
|
||||
- mss==10.0.0
|
||||
- onnxruntime==1.20.0
|
||||
- piexif==1.1.3
|
||||
- psutil==6.1.0
|
||||
- py-cpuinfo==9.0.0
|
||||
- pydantic-settings==2.6.1
|
||||
- python-xlib==0.33
|
||||
- pywavelets==1.7.0
|
||||
- rapidocr-onnxruntime==1.3.25
|
||||
- shellingham==1.5.4
|
||||
- six==1.16.0
|
||||
- sqlite-vec==0.1.5
|
||||
- starlette==0.41.2
|
||||
- termcolor==2.5.0
|
||||
- timm==1.0.11
|
||||
- typer==0.13.0
|
||||
- uvicorn==0.32.0
|
0
linuxdeps.sh
Normal file → Executable file
0
linuxdeps.sh
Normal file → Executable file
24
local_setup.sh
Executable file
24
local_setup.sh
Executable file
@ -0,0 +1,24 @@
|
||||
#! /bin/bash
|
||||
|
||||
# Build web app
|
||||
cd web
|
||||
yarn || exit 1
|
||||
yarn build || exit 1
|
||||
cd ..
|
||||
|
||||
# Install linux dependencies
|
||||
./linuxdeps.sh || exit 1
|
||||
|
||||
# Install python dependencies in conda environment
|
||||
conda env create -f environment.yml || exit 1
|
||||
|
||||
# Activate conda environment
|
||||
conda activate memos || exit 1
|
||||
|
||||
# Initialize database
|
||||
python memos_app.py init || exit 1
|
||||
|
||||
# Deactivate and exit
|
||||
conda deactivate
|
||||
echo "Setup complete. Please run 'conda activate memos' to use the environment and then 'python start.py' to start the full app."
|
||||
echo "You can also run 'source start.sh' to start the full app in one go."
|
94
start.py
Normal file
94
start.py
Normal file
@ -0,0 +1,94 @@
|
||||
import subprocess
|
||||
import threading
|
||||
import sys
|
||||
import signal
|
||||
from colorama import init, Fore
|
||||
import time
|
||||
|
||||
# Initialize colorama for Windows compatibility
|
||||
init()
|
||||
|
||||
# Define colors for each process
|
||||
COLORS = [Fore.GREEN, Fore.BLUE, Fore.YELLOW]
|
||||
|
||||
|
||||
def run_process(command, color):
|
||||
"""Run a single process with colored output."""
|
||||
try:
|
||||
process = subprocess.Popen(
|
||||
command,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True,
|
||||
bufsize=1,
|
||||
universal_newlines=True,
|
||||
)
|
||||
|
||||
while True:
|
||||
line = process.stdout.readline()
|
||||
if not line and process.poll() is not None:
|
||||
break
|
||||
if line:
|
||||
print(f"{color}{command[0]}: {line.rstrip()}{Fore.RESET}")
|
||||
|
||||
return process.poll()
|
||||
|
||||
except Exception as e:
|
||||
print(f"{Fore.RED}Error in {command[0]}: {str(e)}{Fore.RESET}")
|
||||
return 1
|
||||
|
||||
|
||||
def main():
|
||||
# Define your three commands here
|
||||
commands = [
|
||||
["python", "memos_app.py", "record"],
|
||||
["python", "memos_app.py", "serve"],
|
||||
["python", "memos_app.py", "watch"],
|
||||
]
|
||||
|
||||
# Create threads for each process
|
||||
threads = []
|
||||
processes = []
|
||||
|
||||
def signal_handler(signum, frame):
|
||||
print(f"\n{Fore.RED}Interrupting all processes...{Fore.RESET}")
|
||||
for process in processes:
|
||||
process.terminate()
|
||||
sys.exit(0)
|
||||
|
||||
# Set up signal handlers
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
|
||||
# Run processes in separate threads
|
||||
for i, command in enumerate(commands):
|
||||
time.sleep(3)
|
||||
color = COLORS[i % len(COLORS)]
|
||||
process = subprocess.Popen(
|
||||
command,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True,
|
||||
bufsize=1,
|
||||
universal_newlines=True,
|
||||
)
|
||||
processes.append(process)
|
||||
thread = threading.Thread(target=run_process, args=(command, color))
|
||||
thread.start()
|
||||
threads.append(thread)
|
||||
print(f"Started {command[0]} with PID {process.pid}")
|
||||
|
||||
# Wait for all threads to complete
|
||||
for thread in threads:
|
||||
thread.join()
|
||||
|
||||
# Check for any failed processes
|
||||
failed_processes = [process for process in processes if process != 0]
|
||||
if failed_processes:
|
||||
print(f"\n{Fore.RED}Some processes failed: {failed_processes}{Fore.RESET}")
|
||||
else:
|
||||
print(f"\n{Fore.GREEN}All processes completed successfully!{Fore.RESET}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
x
Reference in New Issue
Block a user