You need to enable JavaScript to run this app. Docker容器内已复制abs.exe仍报FileNotFoundError问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内已复制abs.exe仍报FileNotFoundError问题求助

问题核心原因

  1. 跨平台程序不兼容
    你本地是Windows环境,所以abs.exe和配套.dll文件可以正常运行,但你使用的python:3.7是Linux系统基础镜像,无法识别Windows格式的可执行文件和动态库,这是最核心的错误原因。
  2. 可执行文件查找规则不匹配
    Linux系统默认只会从PATH环境变量配置的路径中查找可执行文件,不会优先读取当前工作目录的文件。就算你放入的是Linux版本的abs,直接写abs也会提示找不到,需要写成./abs的相对路径格式,同时还要给文件添加可执行权限。
  3. subprocess参数传递错误
    你将-n 100、-c 10合并为单个字符串传递,subprocess会将其识别为一个完整的参数,导致程序无法正确解析参数。

修复方案

最简单的方式是直接在容器内安装Linux版本的Apache Bench,不需要自己拷贝二进制文件,修改Dockerfile如下:

FROM python:3.7

# 安装系统自带的Apache Bench(默认支持SSL)
RUN apt update && apt install -y apache2-utils && rm -rf /var/lib/apt/lists/*

COPY requirements.txt /
RUN pip install -r /requirements.txt

COPY ./ /app

WORKDIR /app

CMD [ "python", "ab_script.py"]

然后修改ab_script.py中的subprocess调用代码,拆分参数:

subprocess.Popen(['abs', '-n', '100', '-c', '10', 'https://my-url.com'], 
                 stdout=subprocess.PIPE,
                 universal_newlines=True)

如果你坚持使用自行编译的abs,需要换成Linux平台编译的二进制文件,放入/app目录后,在Dockerfile中新增一行RUN chmod +x /app/abs赋予执行权限,同时将subprocess的第一个参数改为./abs。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 01:00:03