jmpy
GitHub
安装
pip install jmpy3
打包文件夹
jmpy -i "xxx project dir" [-o output dir]
参数说明
py文件加密为so或pyd
python代码 加密|加固
参数说明:
-i | --input_file_path 待加密文件或文件夹路径,可是相对路径或绝对路径
-o | --output_file_path 加密后的文件输出路径,默认在input_file_path下创建dist文件夹,存放加密后的文件
-I | --ignore_files 不需要加密的文件或文件夹,逗号分隔
-m | --except_main_file 不加密包含__main__的文件(主文件加密后无法启动), 值为0、1。 默认为1
注意:只会将py文件编译,并且可能会报错,导致有的py文件没有转成so文件,但是不影响运行。
问题:
以flask项目为例,由于主函数main.py中存在如下代码导致不能编译成so文件(todo:或者说使用 -m 0 参数使之编译成so文件,但不知道如何启动运行)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5001)
解决:
可以将main.py做如下修改(注意不能注释掉,否则也不能编译成功),并同级目前新建一个start.py文件运行
main.py
def main():
app.run(host='0.0.0.0', port=5001)
start.py
from main import main
if __name__ == '__main__':
main()
此时可以使用 python start.py 运行。或者直接使用gunicorn也可以运行。
gunicorn -w 4 -b 0.0.0.0:8080 main:app