9

我正在寻找一种方法来创建满足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>
4

1 回答 1

0

通过一些 Shell 脚本工作,可以使用wheelfreeze来完成它。

要创建存档(在 Bash shell 中):

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

并从存档安装:

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

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

于 2020-08-07T07:49:56.440 回答