modify 修复build命令打包问题

This commit is contained in:
2026-03-06 14:56:44 +08:00
parent 538cdb69cd
commit b1968f5ddc
3 changed files with 34 additions and 50 deletions
@@ -1,10 +1,17 @@
# config_loader.py - 读取config.toml的示例代码
import toml
import os
import sys
from pathlib import Path
from typing import Any, Dict, Optional
if sys.version_info >= (3, 11):
import tomllib
else:
import tomli as tomllib
class ConfigLoader:
"""TOML配置文件加载器"""
@@ -29,7 +36,7 @@ class ConfigLoader:
"config.toml",
"config/config.toml",
"~/.config/myapp/config.toml",
"/etc/myapp/config.toml"
"/etc/myapp/config.toml",
]
for path in possible_paths:
@@ -44,12 +51,12 @@ class ConfigLoader:
if not self.config_path.exists():
raise FileNotFoundError(f"配置文件不存在: {self.config_path}")
with open(self.config_path, 'r', encoding='utf-8') as f:
self._config = toml.load(f)
with open(self.config_path, "r", encoding="utf-8") as f:
self._config = tomllib.loads(f.read())
def get(self, key: str, default: Any = None) -> Any:
"""获取配置值,支持点号分隔的路径"""
keys = key.split('.')
keys = key.split(".")
value = self._config
try:
@@ -79,4 +86,3 @@ class ConfigLoader:
def all(self) -> Dict[str, Any]:
"""获取所有配置"""
return self._config
@@ -1,30 +1,9 @@
import sys
from .config import ConfigLoader
import argparse
import os
from module_bank import PythonToSQLite
from typing import Callable
# 检查是否在 PyInstaller 子进程中
def is_pyinstaller_child():
return len(sys.argv) > 1 and ("_child.py" in sys.argv[0] or sys.argv[1].isdigit())
def parse_args():
"""安全的参数解析函数"""
if is_pyinstaller_child():
# PyInstaller 子进程,使用默认参数
return argparse.Namespace(config="config.toml")
parser = argparse.ArgumentParser(
description="{{ cookiecutter.project_name }} 应用启动脚本"
)
parser.add_argument("--config", default="config.toml", help="配置文件路径")
return parser.parse_args()
args = parse_args()
key = None
def init_module_bank(config):
@@ -33,23 +12,21 @@ def init_module_bank(config):
if os.path.exists(module_path) == False:
raise ValueError(f"模块路径不存在: {module_path}")
packer_list = [PythonToSQLite(module_path) for module_path in MODULE_BANK_PATH_LIST]
packer_list = [
PythonToSQLite(module_path, key=key) for module_path in MODULE_BANK_PATH_LIST
]
for packer in packer_list:
modules = packer.list_modules()
for module in modules:
print(f"{module['module_name']} {'[包]' if module['is_package'] else ''}")
packer.install_importer()
packer.install_importer(key=key)
def launch(run_fun: Callable[[dict, dict], None], run_mode: str):
config = ConfigLoader(args.config)
config = ConfigLoader("config.toml")
# 获取对应运行模式的配置
default_config = config.get("default", {})
run_mode = default_config.get("env", "development")
app_config = config.get(run_mode, {})
if run_mode == "production":
init_module_bank(config)
run_fun(app_config, default_config)
@@ -2,6 +2,7 @@ import sys
from pathlib import Path
from typing import TypedDict, Literal, Optional, cast
if sys.version_info >= (3, 11):
import tomllib
from typing import Required, NotRequired