Flask + PyArmor Gunicorn启动报错:RuntimeError: unauthorised use of script

Flask + PyArmor 混淆代码部署到 Docker 容器,通过 Gunicorn 启动报错 RuntimeError: unauthorised use of script

问题描述 :

最近在使用 Flask 编写一个服务脚本后,为了代码保护,我通过 PyArmor 对代码进行了混淆,并将生成的 dist 目录打包到 Docker 镜像中,使用 Gunicorn 作为代理启动服务。然而,容器启动后访问服务时,却报错 RuntimeError: unauthorised use of script,导致服务无法正常运行。

报错信息:

bash 复制代码
[...]
Traceback (most recent call last):
  File "app.py", line 1, in <module>
    from re_service import app
RuntimeError: unauthorised use of script

解决步骤:

  1. 排查问题根源 :
    初步判断是 PyArmor 混淆后的代码在容器环境中无法通过授权验证。PyArmor 会对混淆代码进行加密和授权检查,若环境未通过验证,则会触发该报错。
  2. 重新生成混淆代码 :
    尝试重新使用 PyArmor 生成混淆文件,并指定输出目录到 dist:
  3. 此命令会重新生成 dist 目录下的混淆文件,并确保授权信息正确写入。
  4. 替换 Docker 镜像中的 **dist** 目录 :
    将新生成的 dist 目录替换原有镜像中的对应目录,并重新构建镜像。
  5. 启动容器验证 :
    使用 Gunicorn 启动服务(示例命令):
  6. 此时服务已能正常启动,不再报错。

原因分析:

  • 授权验证失败 :PyArmor 混淆后的代码需要验证运行环境是否合法(例如通过许可证文件或环境变量)。在容器环境中,可能因以下原因导致验证失败:
    • 未正确配置 PyArmor 的许可证(license.lic)或环境变量。
    • 混淆时指定的入口文件路径与实际运行环境不一致。
  • pyarmor gen -O dist re_service.py 的作用 :
    • -O dist:指定输出目录为 dist,覆盖原有混淆文件。
    • re_service.py:指定入口脚本,确保混淆时正确生成依赖文件和授权信息。
      重新生成可能修正了授权信息或文件路径问题,使容器环境通过验证。
相关推荐
言乐612 小时前
Python根据无法识别搜索词找出可能输入内容模型
开发语言·python·django·virtualenv·pygame
yl453013 小时前
硫酸泄露处理生产商怎么选才够专业
大数据·人工智能·python
笨笨饿13 小时前
140_AI新手村MCP与Skills是干嘛的
开发语言·人工智能·python·stm32·单片机·嵌入式硬件·物联网
for_ever_love__14 小时前
机器学习入门——手写线性回归与梯度下降
人工智能·python·学习·机器学习·线性回归
打工仔折腾 AI14 小时前
从 Demo 到生产级 Agent:8 个关键设计机制与 Python 实现拆解
java·jvm·人工智能·后端·python·langchain·ai agent 实战
I Am a robert girl14 小时前
当传感器学会“说谎“:拆解可靠性门控的稀疏惯性动捕融合
python·姿态估计·传感器融合·惯性动捕·imu传感器·可靠性门控·可穿戴计算
李航198314 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程
沙漠之主15 小时前
Python 教学设计资料:从入门到实战的完整课程方案
爬虫·python
ebiobiz16 小时前
极海 APM32 使用 Nimmake 编译指南
c++·python·单片机·嵌入式硬件·mcu
慢云智慧空间16 小时前
从智能终端到空间AI,慢云科技如何重新定义智慧建筑的核心能力?
人工智能·python·科技