Pipenv Lock:如何缓存依赖包以迁移至离线机器
创建包含Pipfile.lock所有依赖的离线归档方案
嘿,我有个实用的方案能解决你要创建Pipfile.lock依赖离线归档的需求,亲测靠谱!核心思路是通过指定Pipenv的缓存目录,把所有依赖包统一收集到一个目录里,之后打包就能拿到可离线使用的归档文件了。
实现逻辑
- 在线环境下:将Pipenv和Pip的缓存目录指向一个空临时目录,执行
pipenv install让所有依赖包下载到这个目录,随后打包该目录 - 离线环境下:把归档文件解压到临时目录,再让Pipenv从这个缓存目录读取依赖,无需网络
完整示例脚本
#!/bin/bash # 创建临时目录用于存放依赖缓存 tmpdir=$(mktemp -d) # 如果是离线模式,先解压已有的依赖归档到临时目录 if [ -n "$offline" ]; then tar -xf pipenv_cache.tar -C "$tmpdir" fi # 清理现有虚拟环境避免干扰 pipenv --rm # 设置缓存目录环境变量,让Pipenv和Pip都使用临时目录 PIPENV_CACHE_DIR="$tmpdir" PIP_CACHE_DIR="$tmpdir" pipenv install --ignore-pipfile # 在线环境下,打包临时目录为离线归档(可添加-z参数用gzip压缩) if [ -z "$offline" ]; then tar -cf pipenv_cache.tar -C "$tmpdir" . echo "依赖归档已生成:pipenv_cache.tar" fi # 可选:清理临时目录 # rm -rf "$tmpdir"
脚本说明
mktemp -d:自动创建一个安全的临时目录,避免手动创建的权限问题pipenv --rm:清空当前项目的虚拟环境,确保安装过程完全基于Pipfile.lock的依赖--ignore-pipfile:强制使用Pipfile.lock的依赖版本,避免自动更新或读取Pipfile的变动- 在线环境下生成的
pipenv_cache.tar就是你需要的独立归档,传到离线机器后,只需设置offline=1再运行脚本即可完成离线安装
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

