使用conda-pack打包完整 Python 环境 + 依赖包,传到无网机器解压即用
如何打包所有环境依赖包放无网络服务器,直接解压就能执行程序
在 Linux 环境下,要实现“打包完整 Python 环境 + 依赖包,传到无网机器解压即用”,目前业界公认最好、最稳妥的方案就是使用 conda-pack。
它专门解决了原生 .venv 无法跨机器移植的“绝对路径写死”和“二进制不兼容”问题。以下是为你整理的、可直接照着执行的详细操作手册:
⚠️ 核心前提(必须严格遵守)
打包机器的 Linux 发行版、系统版本、CPU 架构,必须与目标无网服务器完全一致!
(例如:都是 CentOS 7 x86_64,或都是 Ubuntu 22.04 aarch64。如果架构或系统不同,打包过去的底层 C 扩展库一定会报错。)
第一步:在有网的 Linux 机器上准备环境
1 安装 conda-pack 工具
在你的基础 conda 环境中执行:
pip install conda-pack
# 或者使用 conda 安装
conda install -c conda-forge conda-pack
2创建并配置你的项目专属环境
强烈建议为该项目创建一个干净的独立环境,避免把无关的系统包装进去导致体积过大:
# 创建名为 my_project 的环境,指定与你目标服务器一致的 Python 版本
conda create -n my_project python=3.10
# 激活环境
conda activate my_project
# 安装你项目所需的所有依赖
pip install -r requirements.txt
3清理缓存(减小打包体积)
打包前务必清理,否则会把历史下载的无用包全打进去:
conda clean -a -y
第二步:执行打包
在当前激活的 my_project 环境下,或者指定环境名进行打包:
# -n 指定要打包的环境名
# -o 指定输出的压缩包名称
# --ignore-missing-files 可忽略某些非关键的缺失文件警告
conda pack -n my_project -o my_project_env.tar.gz --ignore-missing-files
说明:conda-pack 会将整个环境(包含 Python 解释器、pip、所有第三方库)打包成一个独立的 tar.gz 文件。这个文件内部已经内置了 conda-unpack 修复脚本。
第三步 创建目录并解压
mkdir -p etf-crawler_env
tar -xzf etf-crawler_env.tar.gz -C etf-crawler_env
第四步:激活环境(这一步会触发 conda-unpack 修复路径)
source etf-crawler_env/bin/activate
第五步:【关键】执行 unpack 修复所有硬编码路径
conda-unpack
第六步:验证是否正常
在虚拟环境:
python -c "import numpy, pyarrow, greenlet; print('OK')"
source etf-crawler_env/bin/deactivate
python -u /data/app/fc_dp/lib/etf-crawler-api/main.py 20240902
最后退出虚拟环境:
source etf-crawler_env/bin/deactivate
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)