Add uv-based dependency management

This commit is contained in:
zhanglei 2026-07-02 14:14:55 +08:00
parent 23591defb1
commit fd43bf7c0b
7 changed files with 3110 additions and 13 deletions

4
.gitignore vendored
View File

@ -1,6 +1,8 @@
.DS_Store
/config.toml
/storage/
.venv/
venv/
/.idea/
/app/services/__pycache__
/app/__pycache__/
@ -53,4 +55,4 @@ tests/*
!tests/test_generate_script_docu_unittest.py
docs/reddit-community
docs/wechat-0.8
docs/wechat-0.8

1
.python-version Normal file
View File

@ -0,0 +1 @@
3.12

View File

@ -15,16 +15,18 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
pkg-config \
&& rm -rf /var/lib/apt/lists/*
# 升级 pip 并创建虚拟环境
RUN python -m pip install --upgrade pip setuptools wheel && \
python -m venv /opt/venv
# 安装 uv 并创建构建虚拟环境
RUN python -m pip install --upgrade pip setuptools wheel uv
# 激活虚拟环境
ENV PATH="/opt/venv/bin:$PATH"
# 让 uv 将项目依赖同步到运行阶段复用的虚拟环境
ENV UV_PROJECT_ENVIRONMENT="/opt/venv" \
UV_LINK_MODE=copy \
UV_COMPILE_BYTECODE=1 \
PATH="/opt/venv/bin:$PATH"
# 复制 requirements.txt 并使用镜像安装 Python 依赖
COPY requirements.txt .
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
# 复制 uv 项目文件并安装 Python 依赖
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-dev
# 运行阶段
FROM python:3.12-slim-bookworm
@ -86,4 +88,4 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
# 设置入口点
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["webui"]
CMD ["webui"]

View File

@ -91,6 +91,17 @@ Below is a screenshot of this person's x (Twitter) homepage
- Windows 10/11 or MacOS 11.0 or above
- [Python 3.12+](https://www.python.org/downloads/)
## Local Run 🚀
```bash
git clone https://github.com/linyqh/NarratoAI.git
cd NarratoAI
uv sync
cp config.example.toml config.toml
uv run streamlit run webui.py --server.maxUploadSize=2048
```
## Feedback & Suggestions 📢
👏 1. You can submit [issue](https://github.com/linyqh/NarratoAI/issues) or [pull request](https://github.com/linyqh/NarratoAI/pulls)

View File

@ -129,8 +129,8 @@ docker compose up -d
git clone https://github.com/linyqh/NarratoAI.git
cd NarratoAI
# 2. 安装依赖
pip install -r requirements.txt
# 2. 使用 uv 安装依赖
uv sync
# 3. 复制配置文件
cp config.example.toml config.toml
@ -138,7 +138,7 @@ cp config.example.toml config.toml
# 4. 编辑 config.toml配置你的 API 密钥
# 5. 启动应用
streamlit run webui.py --server.maxUploadSize=2048
uv run streamlit run webui.py --server.maxUploadSize=2048
# 6. 访问应用
# 浏览器打开 http://localhost:8501

50
pyproject.toml Normal file
View File

@ -0,0 +1,50 @@
[project]
name = "narratoai"
version = "0.8.4"
description = "An all-in-one AI-powered tool for film commentary and automated video editing."
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"requests>=2.32.0",
"moviepy==2.1.1",
"edge-tts==7.2.7",
"streamlit==1.56.0",
"watchdog==6.0.0",
"loguru>=0.7.3",
"tomli>=2.2.1",
"tomli-w>=1.0.0",
"pydub==0.25.1",
"pysrt==1.1.2",
"openai>=1.77.0",
"google-generativeai>=0.8.5",
"azure-cognitiveservices-speech>=1.37.0",
"tencentcloud-sdk-python>=3.0.1200",
"dashscope>=1.24.6",
"Pillow>=10.3.0",
"tqdm>=4.66.6",
"tenacity>=9.0.0",
]
[project.optional-dependencies]
twelvelabs = [
"twelvelabs>=1.2.8",
]
local-asr = [
"faster-whisper>=1.0.1",
]
opencv = [
"opencv-python>=4.11.0.86",
]
cuda = [
"torch>=2.0.0",
"torchvision>=0.15.0",
"torchaudio>=2.0.0",
]
[dependency-groups]
dev = [
"pytest>=8.0.0",
]
[tool.uv]
package = false

3031
uv.lock generated Normal file

File diff suppressed because it is too large Load Diff