You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker构建镜像时用pyarmor混淆Python代码提示文件不存在如何解决

问题解决指导

错误原因梳理

  • Dockerfile中每个RUN指令为独立Shell会话,单独执行cd命令无法改变后续指令的工作目录,CMD执行时无法定位到混淆后的代码文件。
  • 未明确指定工作目录的情况下,文件路径匹配存在不确定性,你将hello-world.py拷贝到根目录/下,若执行pyarmor命令时的工作目录不是根目录,就会出现找不到文件的报错。
  • 依赖文件名称拼写存在问题,Dockerfile中写的requirments.txt不符合常规正确拼写requirements.txt,如果本地依赖文件是正确拼写,COPY和安装依赖步骤都会失效。
  • pyarmor执行后生成的混淆代码存放在dist目录下,你直接在CMD中执行python hello-world.py会找不到已被删除的源文件,无法定位到dist目录下的混淆后文件。

修正后的Dockerfile配置

FROM ubuntu:bionic

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
  && apt-get install -y python3-pip python3-dev \
  && cd /usr/local/bin \
  && ln -s /usr/bin/python3 python \
  && pip3 install --upgrade pip

# 统一指定工作目录,避免路径混乱
WORKDIR /app

COPY hello-world.py .
# 注意和本地依赖文件名保持一致即可,若本地确实命名为requirments.txt可不用修改拼写
COPY requirements.txt .

# 安装依赖,需确保requirements.txt中已添加pyarmor依赖
RUN pip install -r requirements.txt
RUN pyarmor obfuscate hello-world.py
RUN rm -rf hello-world.py

# 直接指定工作目录到dist,CMD执行时自动在该目录下查找文件
WORKDIR /app/dist

CMD ["python", "hello-world.py"]

内容的提问来源于stack exchange,提问作者ram ippala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 12:45:05