Pipenv 锁:如何缓存下载以传输到离线机器

Posted

技术标签:

【中文标题】Pipenv 锁:如何缓存下载以传输到离线机器【英文标题】:Pipenv lock: how to cache downloads for transfer to an offline machine 【发布时间】:2018-10-06 18:12:08 【问题描述】:

我正在寻找一种方法来创建满足Pipfile.lock 所需的所有依赖项的独立存档。实现此目的的一种方法是将PIPENV_CACHE_DIR 指向一个空的临时目录,运行pipenv install,传送该目录的内容,然后在离线机器上使用它。

例如,这应该可以:

tmpdir=$(mktemp -d)
if [ -n "$offline" ]; then
    tar -xf pipenv_cache.tar -C "$tmpdir"
fi
pipenv --rm
PIPENV_CACHE_DIR="$tmpdir" PIP_CACHE_DIR="$tmpdir" pipenv install
if [ -n "$online" ]; then
    tar -cf pipenv_cache.tar -C "$tmpdir" .
fi

但是,这个脚本有很多问题,一个是它不能使用在线机器的缓存,而是每次都必须下载所有内容。

问题是,有没有更好的方法,不涉及自定义脚本?也许有一些记录在案的社区最佳实践?

理想情况下,应该存在如下界面:

pipenv lock --create-archive <file_name>
pipenv install --from-archive <file_name>

【问题讨论】:

【参考方案1】:

通过一些 Shell 脚本工作,wheelfreeze 可以做到这一点。

创建存档(在 Bash shell 中):

(. "$(pipenv --venv)"/bin/activate && wheelfreeze <(pipenv lock -r))

并从存档安装:

wheelfreeze/install "$(pipenv --venv)"

披露:我在尝试解决问题的同时创造了车轮冻结——俗话说“自己挠痒痒”。

【讨论】:

以上是关于Pipenv 锁:如何缓存下载以传输到离线机器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 windows 下载适用于 linux 的 pip 模块

官网下载到离线的Adobe Acrobat Reader DC

前几条消息在传输到离线的 mqtt 客户端时丢失

如何离线下载Chrome的安装包

将 gis 地图加载到离线 anylogic 计算机

node.js和npm离线安装