如何保护Python脚本核心预设逻辑不被编辑?
实现Python脚本可查看逻辑但不可修改预设值的方法
针对你需要让同事能查看脚本逻辑、运行脚本,但无法修改核心预设条件的需求,以下是几种可行的实现方案:
方案1:编译核心逻辑为字节码(.pyc)
这种方法既能保留逻辑说明,又能把可执行的核心代码转为不可直接编辑的字节码:
- 拆分脚本结构:将包含预设值的核心逻辑单独放在一个模块(比如
core_logic.py),在文件中用注释明确写出计算逻辑(比如# 预设规则:先乘0.5再加2),保留函数签名和逻辑说明。 - 编译字节码:在终端运行
python -m compileall core_logic.py,会在__pycache__目录生成对应Python 3.10的字节码文件(比如core_logic.cpython-310.pyc)。 - 替换并分发:将生成的字节码文件重命名为
core_logic.pyc,和主脚本my_script.py一起分发。主脚本中通过import core_logic导入字节码模块,同事可以查看core_logic.py的注释了解逻辑,但修改它不会影响实际运行(运行时加载的是pyc文件)。 - 注意事项:需确保同事使用Python 3.10,不同版本的pyc文件不兼容;同时在README中说明不要删除或修改pyc文件。
方案2:文件系统层面设置只读权限
通过系统权限限制修改,配合明确的提示:
- 将包含核心预设的脚本文件设置为只读:
- Windows:右键文件→属性→勾选「只读」
- Linux/macOS:终端执行
chmod 444 core_logic.py
- 在脚本开头和README中添加醒目的注释,明确告知同事这些预设值是统一计算逻辑的关键,禁止修改。
- 说明:用户可以手动修改文件权限,但能起到明显的警示作用,提高修改门槛。
方案3:用Cython编译为二进制扩展
将核心逻辑编译为不可逆向的二进制文件,完全隐藏可执行代码:
- 安装Cython:终端运行
pip install cython - 编写核心逻辑的Cython文件(比如
core_logic.pyx),内容如下:
def modified_multiplication(int a, int b): # 预设规则:先乘0.5再加2 result = ((a * b) * 0.5) + 2 return result
- 编写编译脚本
setup.py:
from setuptools import setup from Cython.Build import cythonize setup( ext_modules=cythonize("core_logic.pyx") )
- 编译二进制文件:终端运行
python setup.py build_ext --inplace,会生成对应系统的二进制文件(Linux/macOS为.so,Windows为.pyd)。 - 分发二进制文件:将生成的二进制文件和主脚本一起分发,主脚本中通过
import core_logic导入即可。同事只能看到注释中的逻辑说明,无法修改二进制文件内的预设值。
额外建议
- 在项目的README中强调统一预设条件的重要性,明确告知同事不要尝试修改核心逻辑文件。
- 可以将核心逻辑的注释版(仅含函数签名和逻辑说明)放在GitHub仓库中,编译后的可执行文件(pyc或二进制)作为分发版本。
内容的提问来源于stack exchange,提问作者Adel Moustafa
相关产品推荐
相关产品推荐

