Pipenv Lock:如何缓存下载内容以传输到脱机计算机

Ami*_*mir 7 python deployment continuous-integration caching pipenv

我正在寻找一种创建满足所需的所有依赖关系的自包含档案的方法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
Run Code Online (Sandbox Code Playgroud)

但是,此脚本存在许多问题,一个问题是它无法使用在线计算机的缓存,而必须每次都下载所有内容。

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

理想情况下,将存在类似以下的接口:

pipenv lock --create-archive <file_name>
pipenv install --from-archive <file_name>
Run Code Online (Sandbox Code Playgroud)

Ami*_*mir 0

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

\n

创建存档(在 Bash shell 中):

\n
(. "$(pipenv --venv)"/bin/activate && wheelfreeze <(pipenv lock -r))\n
Run Code Online (Sandbox Code Playgroud)\n

并从存档安装:

\n
wheelfreeze/install "$(pipenv --venv)"\n
Run Code Online (Sandbox Code Playgroud)\n
\n

披露:正如俗话所说,我在尝试解决 \xe2\x80\x93 \xe2\x80\x9c 问题时创建了wheelfreeze,以解决我自己的痒处\xe2\x80\x9d。

\n