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

导出依赖包名

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

  1. 导出依赖包名 :使用 pipreqs 或 pip 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
相关推荐
weixin_3077791322 分钟前
RAG 面试陷阱——混合检索并非无条件优越:一个条件反转实验
人工智能·python·面试·职场和发展
2601_9632827730 分钟前
寒地窄带通信工程实践:黑龙江哈尔滨对讲机选型、组网与合规运维总结
运维·服务器·网络
Dxy12393102161 小时前
JS DES 加密详解
开发语言·javascript·arcgis
充值内卷1 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++
云和数据.ChenGuang1 小时前
深入解析 Python 的 dir():从用法到 CPython 源码实现
开发语言·人工智能·python·langchain
nice_lcj5202 小时前
深入理解 Java 反射:从 Class 对象到方法调用(含性能实测 + 迷你 IOC 实战 + 面试考点)
java·开发语言·后端·面试
xbzb2 小时前
OpenStack 网络管理(理论):Linux 网络虚拟化是 Neutron 的地基
linux·服务器·网络·openstack·network·neutron
Android系统攻城狮3 小时前
Linux FFmpeg深度解析之avcodec_flush_buffers调用流程与实战(十九)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频进阶
荣码4 小时前
长上下文与大文档处理:200页PDF怎么喂给AI,我踩了4个坑
java·python
樱花树下的数学喵4 小时前
手写简易 STL string|C++ 字符串底层实现
开发语言·c++