KEYE commited on
Commit
8b14ef8
·
verified ·
1 Parent(s): 86a1ccb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -28
app.py CHANGED
@@ -1,42 +1,61 @@
1
  import os
2
  import sys
 
3
  from loguru import logger
4
 
5
- if __name__ == '__main__':
6
- logger.info("准备启动 Infinity-Parser2-Pro 前端服务...")
 
7
 
8
  # ==========================================
9
- # 1. 动态注入环境变量 (覆盖代码中的硬编码)
10
  # ==========================================
11
- # 在这里统一管理你们的 API 密钥和地址
12
- os.environ['infinity_parser2_pro_base'] = "https://jgcochhge9k5cohjme5jgqeompbh998m.openapi-hw.infly.cn"
13
- os.environ['infinity_parser2_pro_Authorization'] = "PpcXBN1L0ND81LdIgOBNYGC8ILFYno+wx7BMzapDaFc="
14
-
15
- # 禁用 Gradio 的 SSR 模式以提高兼容性
16
- os.environ['GRADIO_SSR_MODE'] = "false"
17
 
18
  # ==========================================
19
- # 2. 依赖检查 (可选,确保 pdf2image 所的 poppler 存在)
20
  # ==========================================
21
- if sys.platform.startswith('linux'):
22
- # 你的 inf_gradio.py 内部其实已经写了 apt-get install poppler-utils
23
- # 这里可以直接跳过,或者做进一步的权限检查
24
- pass
 
 
25
 
26
  # ==========================================
27
- # 3. 启动 Gradio 应用
28
  # ==========================================
29
- # 因为 inf_gradio.py 没有使用 argparse 接收参数,
30
- # 我们直接通过 python 运行它即可,它内部的 demo.launch() 会接管一切。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  try:
32
- logger.info("正在拉起 inf_gradio.py ...")
33
- # 使用 os.system subprocess 运行主脚本
34
- exit_code = os.system(f"{sys.executable} inf_gradio.py")
35
-
36
- if exit_code != 0:
37
- logger.error(f"服务异常退出,退出码: {exit_code}")
38
-
39
- except KeyboardInterrupt:
40
- logger.info("接收到终止信号,服务已关闭。")
41
- except Exception as e:
42
- logger.exception(f"启动过程中发生错误: {e}")
 
1
  import os
2
  import sys
3
+ import subprocess
4
  from loguru import logger
5
 
6
+ def setup_and_run():
7
+ repo_url = "https://github.com/renkexuan369/Infinity-Parser2-pro.git"
8
+ repo_dir = "Infinity-Parser2-pro"
9
 
10
  # ==========================================
11
+ # 1. 动态获取/拉取最新代码
12
  # ==========================================
13
+ if not os.path.exists(repo_dir):
14
+ logger.info(f"正在克隆仓库: {repo_url}")
15
+ subprocess.run(["git", "clone", repo_url], check=True)
16
+ else:
17
+ logger.info("仓库已存在,拉取最新代码...")
18
+ subprocess.run(["git", "pull"], cwd=repo_dir, check=True)
19
 
20
  # ==========================================
21
+ # 2. 安装 Python 依赖 (如果)
22
  # ==========================================
23
+ # 建议将依赖写在 HF Space 自带的 requirements.txt 中以加速启动
24
+ # 但如果一定要在此处动态安装,可以取消下方注释:
25
+ # req_file = os.path.join(repo_dir, "requirements.txt")
26
+ # if os.path.exists(req_file):
27
+ # logger.info("安装仓库依赖...")
28
+ # subprocess.run([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"], cwd=repo_dir, check=True)
29
 
30
  # ==========================================
31
+ # 3. 注入安全环境变量
32
  # ==========================================
33
+ # 强烈建议将真实密钥配置在 HF Space Settings -> Variables and secrets 中
34
+ os.environ['infinity_parser2_pro_base'] = os.environ.get(
35
+ "INFINITY_API_BASE",
36
+ "https://jgcochhge9k5cohjme5jgqeompbh998m.openapi-hw.infly.cn"
37
+ )
38
+ # 获取 HF Secret 中配置的 Authorization,如果没有则使用默认值(注意:直接写死在代码里有泄露风险)
39
+ os.environ['infinity_parser2_pro_Authorization'] = os.environ.get(
40
+ "INFINITY_API_AUTH",
41
+ "PpcXBN1L0ND81LdIgOBNYGC8ILFYno+wx7BMzapDaFc="
42
+ )
43
+ os.environ['GRADIO_SSR_MODE'] = "false"
44
+
45
+ # HF Space 默认暴露 7860 端口
46
+ os.environ["GRADIO_SERVER_PORT"] = "7860"
47
+ os.environ["GRADIO_SERVER_NAME"] = "0.0.0.0"
48
+
49
+ # ==========================================
50
+ # 4. 启动 Gradio 服务
51
+ # ==========================================
52
+ logger.info("准备启动 inf_gradio.py ...")
53
+
54
+ # 关键:必须设置 cwd=repo_dir,否则 Python 找不到 utils.py 和 prompts.py
55
  try:
56
+ subprocess.run([sys.executable, "inf_gradio.py"], cwd=repo_dir, check=True)
57
+ except subprocess.CalledProcessError as e:
58
+ logger.error(f"Gradio 服务异常退出: {e}")
59
+
60
+ if __name__ == "__main__":
61
+ setup_and_run()