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

如何在Docker Windows容器中成功安装requirements.txt(Python模块)

Windows Docker容器安装requirements.txt踩坑解决思路

问题背景

在公司内网环境里,用Windows Docker容器装requirements.txt时碰到俩问题:

  • 容器配置JSON里加dns字段,直接报网络相关错误;
  • 删掉dns字段,又出现依赖安装失败的报错;
  • 同样的requirements.txt在Linux容器里装完全没问题,但因为必须用到只支持Windows的pywin32库,只能死磕Windows容器;
  • 翻了一堆博客和StackOverflow帖子,没找到能直接解决的方案。

逐个问题拆解解决

1. 带dns字段的网络报错

公司内网基本都有自己的DNS服务器,Windows容器的DNS配置很容易和内网环境不兼容:

  • 别用8.8.8.8这种公共DNS,直接把容器DNS改成公司内网的DNS地址;
  • 检查Docker daemon的daemon.json配置,给全局加上内网DNS,让Windows容器自动继承:
    {
      "dns": ["192.168.x.x"] // 换成你们公司内网DNS的实际地址
    }
    
  • 改完记得重启Docker服务,再重新构建容器,不然DNS配置不生效,连依赖包的地址都解析不了。

2. 不带dns字段的安装报错

这种情况十有八九是pip源或者代理的问题:

  • 内网环境下默认的PyPI源肯定访问不了,直接在requirements.txt最开头加上公司内部的PyPI镜像配置:
    --index-url http://公司PyPI镜像地址/simple/
    --trusted-host 公司PyPI镜像域名
    
    或者在Dockerfile里提前给pip配置好源:
    RUN pip config set global.index-url http://公司PyPI镜像地址/simple/
    RUN pip config set global.trusted-host 公司PyPI镜像域名
    
  • 如果公司需要走代理才能访问外网PyPI,就在Dockerfile里加代理环境变量:
    ENV HTTP_PROXY=http://公司代理地址:端口
    ENV HTTPS_PROXY=http://公司代理地址:端口
    ENV NO_PROXY=公司内部域名列表
    
  • 另外检查下pywin32的版本,得和Windows容器的系统版本匹配,比如用Windows Server 2019容器的话,pywin32至少要227以上版本,版本不兼容也会装失败。

3. 额外验证步骤

  • 进到运行的Windows容器里,手动跑nslookup 公司PyPI地址,看看DNS解析正常不;
  • 单独装pywin32试试:pip install pywin32,排除其他依赖的干扰;
  • 要是还是不行,找公司运维确认下容器有没有访问PyPI源的权限,内网防火墙说不定拦了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:32:52