当前位置:首页 > 技术 > 正文内容

Python离线环境依赖包部署方案

访客 技术 2026年7月2日 1

内网环境下Python依赖包的完整离线安装流程

适用于无法连接互联网的目标机器(B主机),通过已联网主机(A主机)预先打包所有依赖,实现安全、高效的离线部署。

环境前提

  • 两台主机的Python版本必须完全一致(包括主版本、次版本及架构,如3.10.12 x64)
  • 目标机已安装嵌入式Python(Embeddable Distribution)

主机角色说明

主机用途示例路径
A主机联网源机,用于下载和打包依赖C:\Users\user\source
B主机内网目标机,无网络访问权限C:\Users\user\destination

第一阶段:在联网主机(A)准备离线包

  1. 进入项目目录并激活虚拟环境
    cd C:\Users\user\source\test<br>.\Scripts\Activate.ps1
  2. 导出依赖清单
    pip freeze > requirements.txt
  3. 下载所有依赖包(仅二进制文件)
    mkdir offline_pkgs<br>pip download -r requirements.txt -d offline_pkgs<br>pip download pip setuptools wheel -d offline_pkgs --only-binary=all

    确保生成的文件夹中仅包含`.whl`格式文件,避免因缺少编译工具导致安装失败。

  4. 传输至目标主机
    offline_pkgs 文件夹与 requirements.txt 复制到B主机指定目录:
    C:\Users\user\destination\offline_pkgs\
    C:\Users\user\destination\requirements.txt

第二阶段:在内网主机(B)完成环境搭建

假设嵌入式Python已解压至:

C:\Users\user\destination\python310\
  1. 启用site-packages支持
    编辑文件:
    C:\Users\user\destination\python310\python310._pth
    确保内容如下(取消注释最后一行):
    python310.zip
    .
    Lib\site-packages
    import site

    修改后关闭所有终端,重新打开PowerShell以使配置生效。

  2. 获取安装脚本
    在A主机下载 get-pip.py 并复制到B主机:
    C:\Users\user\destination\get-pip.py
  3. 离线安装核心工具链
    cd C:\Users\user\destination<br>python310\python.exe get-pip.py --no-index --find-links=offline_pkgs

    该命令将从本地文件夹安装pip、setuptools、wheel等基础组件。

  4. 验证pip是否可用
    python310\python.exe -m pip --version
    预期输出应显示类似:
    pip 26.0.1 from C:\Users\user\destination\python310\Lib\site-packages\pip (python 3.10)
  5. 安装项目依赖
    python310\python.exe -m pip install --no-index --find-links=offline_pkgs -r requirements.txt
    所有包将从本地缓存安装,不会尝试联网。
  6. 可选:验证安装结果
    python310\python.exe -m pip list<br>python310\python.exe -c "import your_main_module; print('Success!')"

常见问题排查

问题现象解决方案
Python版本不匹配确保A/B主机使用相同版本的Python(含位数)
出现源码包安装失败始终添加 --only-binary=all 参数
提示找不到pip模块检查 python310._pth 是否正确启用了 import site
包未找到或平台不兼容确认 offline_pkgs 中存在对应平台的 .whl 文件(如 win_amd64)

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。