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

无pip且无公网的生产/UAT环境如何获取Python应用所需依赖包

问题解答

关于是否可以直接复制Anaconda site-packages全部内容

  • 不建议直接全量复制,存在几个核心问题:
    • 体积冗余:全量复制会带上环境中所有安装过的无关库,数百MB的体积会大幅增加部署包的传输和部署成本
    • 兼容性风险:如果开发环境和生产环境的Python版本、操作系统架构(比如开发为Windows、生产为Linux)、CPU指令集不一致,部分带二进制编译文件的库(比如numpy、pandas)直接复制过去会无法运行
    • 路径依赖问题:部分库会硬编码安装时的路径,直接复制到其他目录可能出现加载失败
  • 仅在开发和生产环境完全一致(操作系统、Python版本、架构100%匹配),且不介意体积的特殊场景下可以临时使用。

仅提取应用实际依赖的方法

下面提供两种可落地的方案:

方案1:pip导出依赖+离线下载(推荐,兼容性最好)

首先在有网络的开发环境操作:

  1. 先清理开发环境无关依赖,确保当前虚拟环境只安装了应用需要的库,导出依赖清单:
    pip freeze > requirements.txt
  2. 下载所有依赖的安装包到指定目录,如果生产环境和开发环境的架构/系统不同,需要添加参数指定目标环境(比如生产是Linux x86_64、Python3.9,就加--platform manylinux_x86_64 --python-version 3.9 --only-binary :all:参数):
    pip download -r requirements.txt -d python-lib
  3. 到无网的生产环境后,如果允许执行pip命令,直接从本地目录安装依赖:
    pip install --no-index --find-links=python-lib -r requirements.txt
    如果不允许执行pip安装,也可以直接把python-lib目录添加到Python的模块搜索路径中,在应用入口文件的最开头添加以下代码即可:
    import sys
    sys.path.insert(0, "./python-lib")
    

方案2:用工具扫描项目精确提取依赖

如果开发环境安装了很多无关库、不想单独新建虚拟环境,可以用pipreqs工具扫描项目代码,仅导出实际用到的依赖:

  1. 安装pipreqs:
    pip install pipreqs
  2. 扫描项目根目录生成依赖清单:
    pipreqs /path/to/your/project --encoding=utf8
  3. 后续的依赖下载、部署步骤和方案1完全一致,这种方式生成的依赖清单只会包含代码实际import的库,体积会小很多。

注意:如果依赖库包含C扩展的二进制文件,一定要保证下载的包和生产环境的系统、Python版本、架构匹配,否则会出现导入报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:24:02