首页 > 解决方案 > 验证所有 Pipenv 软件包都已安装并且是最新的,而无需卸载并重新安装整个虚拟环境“pipenv install”

问题描述

正如标题所暗示的那样,我还没有弄清楚如何避免 using 的默认行为pipenv install。默认情况下,pipenv install卸载虚拟环境,然后将其与 pipfile 中指定的所有依赖项一起重新实例化。虽然这种默认行为是可以的,但随着依赖项列表的增长,它会变成一个非常缓慢的过程。

我希望通过首先检测虚拟环境是否已经存在来改变这一点,如果存在,则只更新需要更新的包。这也意味着如果 Pipfile 中的包设置为特定包,则该包将不会更新。

但是,如果不存在虚拟环境,那么标准pipenv install就足够了。

这是我当前尝试的伪类表示:

try:
    import pipenv
except ModuleNotFoundError:
    # Install pipenv here

try:
    subprocess.check_output(["pipenv", "run", "pip3", "-V"])
    # Virtual Env exists
    packages = subprocess.check_output(["pipenv", "run", "pip3", "list", "--outdated"]).decode('utf-8')

    # After parsing out the packages properly
    # run python3 -m pipenv run pip3 install -U {packages}
except subprocess.SubprocessError:
    # No Virtual Env found, create a new one
    # using 'python3 -m pipenv --three install --dev --skip-lock --clear'

虽然这段代码执行没有问题,但我不知道这是否考虑了 Pipfile 版本。我还收到警告说某些升级的依赖项与其他已安装的依赖项不兼容。但是 pip3 似乎仍然安装了这些包,破坏了未来的导入......

有没有更好的方法来解决这个问题?

感谢大家!

标签: pythonpipenv

解决方案


推荐阅读