Files
chat_rebot_plugen_support/dependence.py
JianFeeeee f787218e51 modified: README.md
new file:   dependence.py
	new file:   package.py
	new file:   packup.bat
	new file:   packup.sh
	new file:   requirements.txt
	new file:   scripts/__init__.py
	new file:   scripts/file_store_api.py
	new file:   src/__init__.py
	new file:   src/config.toml
	new file:   src/modules/__init__.py
	new file:   src/modules/plugin_modules.py
	new file:   src/modules/user_module.py
	new file:   src/process.py
	new file:   test.py
2025-08-13 22:43:25 +08:00

88 lines
2.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
import os
import sys
import shutil
import subprocess
from pathlib import Path
def check_requirements_file(requirements_file="requirements.txt"):
"""检查 requirements.txt 是否存在"""
if not os.path.exists(requirements_file):
print(f"❌ 错误:未找到 {requirements_file}!请确保它在当前目录。")
print(f"👉 生成 requirements.txt 的方法:`pip freeze > requirements.txt`")
sys.exit(1)
def install_deps_to_folder(
requirements_file="requirements.txt",
target_dir="package",
upgrade=True,
no_deps=False
):
"""
安装依赖到目标文件夹
:param requirements_file: 依赖文件路径
:param target_dir: 目标目录(默认 package
:param upgrade: 是否更新已安装的包
:param no_deps: 是否跳过依赖包(仅安装直接依赖)
"""
target_path = Path(target_dir).resolve()
# 1. 如果目标文件夹已存在,提醒用户确认覆盖
if target_path.exists():
print(f"⚠️ 警告:目标文件夹 {target_path} 已存在!")
choice = input("是否删除并重建?(y/N) ").strip().lower()
if choice != "y":
print("⏹ 用户取消操作")
return False
shutil.rmtree(target_path)
target_path.mkdir(parents=True)
# 2. 构造 pip 安装命令
pip_cmd = [
sys.executable, "-m", "pip", "install",
"-r", requirements_file,
"--target", str(target_path),
]
if upgrade:
pip_cmd.append("--upgrade")
if no_deps:
pip_cmd.append("--no-deps")
# 3. 执行安装
print(f"\n📦 正在安装依赖到 {target_path} ...")
result = subprocess.run(pip_cmd, capture_output=True, text=True)
if result.returncode != 0:
print("\n❌ 安装失败!错误信息:")
print(result.stderr)
return False
# 4. 成功时打印提示
print("\n✅ 安装成功!依赖已保存到:")
print(f"{target_path}\n")
# 5. 打印后续使用说明
return True
def main():
check_requirements_file()
dir = "src"
dir = os.path.join(dir,"packages")
install_success = install_deps_to_folder(
requirements_file="requirements.txt",
target_dir=dir,
upgrade=True,
no_deps=False, # 设为 True 仅安装直接依赖
)
if install_success:
# 检查是否安装了 pip 依赖
package_size = sum(f.stat().size for f in Path("package").glob("**/*") if f.is_file())
print(f"📂 安装大小: {package_size / 1024 / 1024:.2f} MB")
else:
print("\n❌ 安装失败!请检查报错信息。")
if __name__ == "__main__":
main()