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
相关推荐
dongfangkandian1 小时前
从浪涌失控到端口级调度:2026年AI服务器老化测试专用PDU的选型逻辑
服务器
特立独行的猫a1 小时前
我用 Rust + Tauri 2 复刻了 N_m3u8DL-CLI:一个 m3u8 多线程下载器
开发语言·后端·rust·m3u8·视频下载器·m3u8dl-cli
土星云SaturnCloud1 小时前
边缘计算赋能电子焊接工位双摄AI管控:土星云SE110S-WC8实现合规检测与质量追溯全闭环
服务器·人工智能·ai·边缘计算
程序员雷欧1 小时前
LongAdder
开发语言·python
Neolnfra1 小时前
使用 Netdata 给服务器增加一个实时监控面板
运维·服务器
月光船幽幽2 小时前
分层阈值规避归藏协议过度重置
人工智能·python
鱼子星_2 小时前
【C++】反向迭代器:反向迭代器的底层认识与模拟实现
开发语言·c++·笔记·stl
名字还没想好☜2 小时前
Java 用 MethodHandle 替代反射:调用性能实测、invokeExact 的坑与缓存
java·开发语言·缓存·反射·methodhandle
SMF19192 小时前
【Linux】完美解决缩略图工具gm调用java.io.FileNotFoundException: gm问题
java·开发语言·python