From e7e2a67ea90b2cb597aba33c60b1bb7cdd2cb703 Mon Sep 17 00:00:00 2001 From: chakcy <947105045@qq.com> Date: Fri, 1 May 2026 14:32:08 +0800 Subject: [PATCH] =?UTF-8?q?modify:=20=E6=B7=BB=E5=8A=A0=E5=AF=86=E9=92=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 +++++++++------- pyproject.toml | 4 ++-- src/module_bank/python_to_sqlite.py | 17 +++++++++++++++++ uv.lock | 2 +- 4 files changed, 29 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 525af56..d846fc9 100644 --- a/README.md +++ b/README.md @@ -77,13 +77,13 @@ my_module.hello() ```python # 打包模块或目录 -mb pack my_package --db modules.db --key my_package_key +mbank pack my_package --db modules.db --key my_package_key # 列出数据库中的模块 -mb list --db modules.db +mbank list --db modules.db # 安装导入器并进入交互模式 -mb install --db modules.db --key my_package_key +mbank install --db modules.db --key my_package_key ``` ### 编程接口 @@ -93,7 +93,7 @@ mb install --db modules.db --key my_package_key ```python from module_bank import PythonToSQLite -packer = PythonToSQLite("modules.db") +packer = PythonToSQLite("modules.mbank") # 打包单个模块 packer.pack_module("module.py", "module_name") @@ -111,7 +111,7 @@ packer.verify_package_structure() from module_bank import PythonToSQLite import sys -packer = PythonToSQLite("modules.db") +packer = PythonToSQLite("modules.mbank") # 安装导入器到sys.meta_path finder = packer.install_importer() @@ -136,6 +136,7 @@ src/module_bank/ ├── sqlite_module_importer.py # 数据库存储管理器 ├── sqlite_meta_path_finder.py # 元路径查找器 ├── sqlite_module_loader.py # 模块加载器 +├── encryption.py # 密钥管理 ├── cli.py # 命令行接口 └── __init__.py # 模块导出 ``` @@ -159,6 +160,7 @@ CREATE TABLE python_modules ( bytecode BLOB, -- 编译后的字节码 is_package BOOLEAN, -- 是否是包 metadata TEXT, -- 元数据(JSON格式) + encrypted INTEGER DEFAULT 0, -- 是否已加密 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ``` @@ -239,10 +241,10 @@ DELETE FROM python_modules WHERE module_name = 'module_to_remove'; ```bash # 数据库是单个文件,易于备份 -cp modules.db modules.backup.db +cp modules.mbank modules.backup.mbank # 恢复 -cp modules.backup.db modules.db +cp modules.backup.mbank modules.mbank ``` ## 📚 应用场景 diff --git a/pyproject.toml b/pyproject.toml index b296cdf..13032d0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ description = "Add your description here" name = "module_bank" readme = "README.md" requires-python = ">=3.7" -version = "0.1.1" +version = "0.2.2" [[tool.uv.index]] default = true @@ -25,4 +25,4 @@ dev = [ packages = ["src/module_bank"] [project.scripts] -mb = "module_bank.cli:main" +mbank = "module_bank.cli:main" diff --git a/src/module_bank/python_to_sqlite.py b/src/module_bank/python_to_sqlite.py index 9fa99ea..8882b15 100644 --- a/src/module_bank/python_to_sqlite.py +++ b/src/module_bank/python_to_sqlite.py @@ -138,3 +138,20 @@ class PythonToSQLite: print( f"警告:模块 {module_name} 的父包 {parent_package} 不是一个包" ) + + def packer_key(self, key): + self.importer.connection.execute( + """ + INSERT OR REPLACE INTO python_modules + (module_name, source_code, bytecode, is_package, metadata, encrypted) + VALUES (?, ?, ?, ?, ?, ?) + """, + ("key", key, None, None, None, None), + ) + self.importer.connection.commit() + + def get_key(self): + cursor = self.importer.connection.execute(""" + SELECT source_code FROM python_modules WHERE module_name = 'key' + """) + return cursor.fetchone() diff --git a/uv.lock b/uv.lock index bfc1cb4..b019880 100644 --- a/uv.lock +++ b/uv.lock @@ -891,7 +891,7 @@ wheels = [ [[package]] name = "module-bank" -version = "0.1.1" +version = "0.2.2" source = { editable = "." } dependencies = [ { name = "cryptography", version = "45.0.7", source = { registry = "https://pypi.tuna.tsinghua.edu.cn/simple" }, marker = "python_full_version < '3.8'" },