python依赖包导出离线安装到没有外网的服务器

导出依赖包名

本文详细介绍了在跨平台(如从 Windows 为 Linux 准备)或同平台环境下,管理 Python 项目依赖的完整流程。主要内容包括:

  1. 导出依赖包名 :使用 pipreqspip freeze 生成 requirements.txt 文件。
  2. 下载对应的安装包
    • 跨平台下载:在 Windows 上为 Linux 目标平台下载指定 Python 版本和 ABI 的 wheel 包。
    • 同平台下载 :直接使用 pip download 下载依赖包到本地目录。
  3. 安装依赖包
    • 安装到全局 Python 环境。
    • 安装到虚拟环境(venv),支持直接调用虚拟环境内的 pip 或先激活环境再安装。
  4. 后续操作:查看已安装的包,以及在 Linux 上使用指定虚拟环境的 Python 运行脚本。

通过上述步骤,可以实现依赖包的离线部署和环境一致性保证。

Python 脚本生成 requirements.txt

sh 复制代码
     pipreqs ./ --use-local --force

Python 项目中生成 requirements.txt

sh 复制代码
    pip freeze > requirements.txt

下载对应的安装包

1. 在 Windows 上下载 Linux 对应平台的 Python 依赖包

注意,先把文件 requirements.txt 里面的 Python 包的版本限定去除,让它自动选择版本,否则可能找不到依赖。

sh 复制代码
pip download -r requirements.txt -d packages --platform manylinux2014_x86_64 --python-version 39 --implementation cp --abi cp39 --only-binary=:all:
参数 含义 解释
download 下载包,不安装 只把依赖下载下来
-r requirements.txt 根据 requirements.txt 下载依赖 下载所有依赖及其子依赖
-d packages 下载到指定目录 所有 .whl 文件放到 packages/ 目录
--platform manylinux2014_x86_64 指定目标平台 下载适用于 Linux x86_64 的包,而不是 Windows 包
--python-version 39 指定 Python 版本 下载适用于 Python 3.9 的 wheel
--implementation cp 指定 Python 实现 cp = CPython(官方 Python)
--abi cp39 指定 ABI 下载与 CPython 3.9 ABI 对应的 wheel
--only-binary=:all: 只下载 wheel 不下载源码包(tar.gz)

2. 同平台系统下载 Python 依赖包

同平台、同版本,直接下载即可。

sh 复制代码
pip download -r requirements.txt -d packages

安装依赖包

1. 安装到全局环境

sh 复制代码
pip install --no-index --find-links=packages -r requirements.txt

2. 安装到虚拟环境venv

a. 直接运行虚拟环境的 pip 命令安装
sh 复制代码
/etc/python/venv/bin/pip install --no-index --find-links=packages -r requirements.txt
b. 安装到某个虚拟环境 (venv)
(1) 激活 venv
sh 复制代码
source /etc/zabbix-python/venv/bin/activate
(2) 安装 requirements.txt 中列出的依赖包
sh 复制代码
pip install --no-index --find-links=packages -r requirements.txt
查看已安装的包
sh 复制代码
pip list
pip show pymssql

Linux 运行 py 脚本

需要指定对应环境的 Python 来运行脚本

sh 复制代码
 /etc/python/venv/bin/python /etc/python/scripts/db_check/xxxx.py
相关推荐
潘潘的嵌入式日记8 分钟前
I²C 从机接收总被覆盖?双缓冲要在 STOP 时交接
c语言·开发语言·单片机
上海云盾-小余12 分钟前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
Lhan.zzZ44 分钟前
QML 组件库:VS2022 + Qt 静态库方案
开发语言·c++·qt·visual studio
敲代码的嘎仔1 小时前
28届后端开发-海康威视日常实习一面(已OC)
java·开发语言·后端·面试·海康威视·实习·大厂
我命由我123452 小时前
Linux - Linux/POSIX 路径斜杠折叠规则
linux·运维·服务器·android studio·android jetpack·android-studio·android runtime
谢白羽2 小时前
SGLang的AWQ量化笔记
笔记·python·sglang
sakiko_2 小时前
OC基础语法(与Swift对比)-1
开发语言·ios·objective-c·swift
Uncertainty!!2 小时前
Linux 主机无法完成校园网认证排查记录:从 DHCP、ARP 到 Portal 认证流程分析
linux·运维·服务器
迷迭香yy2 小时前
基金档案数据工程实战从收入分析到持仓穿透的Python解析 IG50免费开源股票数据API接口
开发语言·python
其实防守也摸鱼3 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透