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
88 lines
2.7 KiB
Python
88 lines
2.7 KiB
Python
#!/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()
|