modify: 添加密钥
This commit is contained in:
@@ -77,13 +77,13 @@ my_module.hello()
|
|||||||
|
|
||||||
```python
|
```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
|
```python
|
||||||
from module_bank import PythonToSQLite
|
from module_bank import PythonToSQLite
|
||||||
|
|
||||||
packer = PythonToSQLite("modules.db")
|
packer = PythonToSQLite("modules.mbank")
|
||||||
|
|
||||||
# 打包单个模块
|
# 打包单个模块
|
||||||
packer.pack_module("module.py", "module_name")
|
packer.pack_module("module.py", "module_name")
|
||||||
@@ -111,7 +111,7 @@ packer.verify_package_structure()
|
|||||||
from module_bank import PythonToSQLite
|
from module_bank import PythonToSQLite
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
packer = PythonToSQLite("modules.db")
|
packer = PythonToSQLite("modules.mbank")
|
||||||
|
|
||||||
# 安装导入器到sys.meta_path
|
# 安装导入器到sys.meta_path
|
||||||
finder = packer.install_importer()
|
finder = packer.install_importer()
|
||||||
@@ -136,6 +136,7 @@ src/module_bank/
|
|||||||
├── sqlite_module_importer.py # 数据库存储管理器
|
├── sqlite_module_importer.py # 数据库存储管理器
|
||||||
├── sqlite_meta_path_finder.py # 元路径查找器
|
├── sqlite_meta_path_finder.py # 元路径查找器
|
||||||
├── sqlite_module_loader.py # 模块加载器
|
├── sqlite_module_loader.py # 模块加载器
|
||||||
|
├── encryption.py # 密钥管理
|
||||||
├── cli.py # 命令行接口
|
├── cli.py # 命令行接口
|
||||||
└── __init__.py # 模块导出
|
└── __init__.py # 模块导出
|
||||||
```
|
```
|
||||||
@@ -159,6 +160,7 @@ CREATE TABLE python_modules (
|
|||||||
bytecode BLOB, -- 编译后的字节码
|
bytecode BLOB, -- 编译后的字节码
|
||||||
is_package BOOLEAN, -- 是否是包
|
is_package BOOLEAN, -- 是否是包
|
||||||
metadata TEXT, -- 元数据(JSON格式)
|
metadata TEXT, -- 元数据(JSON格式)
|
||||||
|
encrypted INTEGER DEFAULT 0, -- 是否已加密
|
||||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
@@ -239,10 +241,10 @@ DELETE FROM python_modules WHERE module_name = 'module_to_remove';
|
|||||||
|
|
||||||
```bash
|
```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
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📚 应用场景
|
## 📚 应用场景
|
||||||
|
|||||||
+2
-2
@@ -6,7 +6,7 @@ description = "Add your description here"
|
|||||||
name = "module_bank"
|
name = "module_bank"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.7"
|
requires-python = ">=3.7"
|
||||||
version = "0.1.1"
|
version = "0.2.2"
|
||||||
|
|
||||||
[[tool.uv.index]]
|
[[tool.uv.index]]
|
||||||
default = true
|
default = true
|
||||||
@@ -25,4 +25,4 @@ dev = [
|
|||||||
packages = ["src/module_bank"]
|
packages = ["src/module_bank"]
|
||||||
|
|
||||||
[project.scripts]
|
[project.scripts]
|
||||||
mb = "module_bank.cli:main"
|
mbank = "module_bank.cli:main"
|
||||||
|
|||||||
@@ -138,3 +138,20 @@ class PythonToSQLite:
|
|||||||
print(
|
print(
|
||||||
f"警告:模块 {module_name} 的父包 {parent_package} 不是一个包"
|
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()
|
||||||
|
|||||||
@@ -891,7 +891,7 @@ wheels = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "module-bank"
|
name = "module-bank"
|
||||||
version = "0.1.1"
|
version = "0.2.2"
|
||||||
source = { editable = "." }
|
source = { editable = "." }
|
||||||
dependencies = [
|
dependencies = [
|
||||||
{ name = "cryptography", version = "45.0.7", source = { registry = "https://pypi.tuna.tsinghua.edu.cn/simple" }, marker = "python_full_version < '3.8'" },
|
{ name = "cryptography", version = "45.0.7", source = { registry = "https://pypi.tuna.tsinghua.edu.cn/simple" }, marker = "python_full_version < '3.8'" },
|
||||||
|
|||||||
Reference in New Issue
Block a user