Metadata-Version: 2.4
Name: ixi
Version: 1.0.105
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: certifi>=2024.0.0
Requires-Dist: packaging>=24.0
Summary: Encrypt Python scripts and execute decrypted code.
Keywords: encryption,script-protection
Author: 3iXi
License-Expression: LicenseRef-Proprietary
Requires-Python: >=3.10
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM

# ixi

`ixi` 用于加密 Python 脚本，并生成可执行的加密启动脚本。运行时只在内存中解密并执行，不落盘明文。

## 安装

```bash
pip install --only-binary=:all: ixi
```

## 命令

- `ixi -v`：输出当前版本号
- `ixi -e script.py`：以默认 `compat` 模式加密脚本并输出 `script_<timestamp>.py`
- `ixi -e script.py --mode bytecode`：以 `bytecode` 强保护模式加密脚本，运行时不恢复源码文本，但产物绑定加密时的 CPython cache tag 和 magic number（会导致加密后脚本只能在同版本Python上才能运行...一般不建议使用）

## 运行时行为

- 启动脚本会先尝试 `import ixi`。
- 若导入失败，自动按 `python -m pip`、当前解释器目录下的 `pip/pip3`、`uv pip install --python 当前解释器` 的顺序尝试安装，并依次尝试默认源、清华源与官方 PyPI simple 源。
- 若本地 `ixi` 低于云端最新版，启动脚本会用同样的 pip/uv 兼容安装方式，按默认源、清华源、官方 PyPI simple 源的顺序尝试自动升级；升级成功后重启当前脚本以加载新版运行时。
- 解密前强制请求清华源：
  - `GET https://pypi.tuna.tsinghua.edu.cn/simple/ixi/`
  - `Accept: application/vnd.pypi.simple.v1+json`
  - TLS 信任根固定为 `certifi`（Mozilla CA Bundle），不使用系统证书库。
  - 运行时额外要求对端证书签发组织为 `Let's Encrypt`。
- 本地版本低于最新版且自动升级失败时，打印告警并终止执行。
- 若接口返回 404，直接终止执行。
- 自动安装失败时会输出 `machine/libc/python` 诊断信息，便于定位 wheel 标签不匹配问题（例如 Alpine/musl 环境缺少 `musllinux` 产物）。

