python - 验证所有 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 似乎仍然安装了这些包,破坏了未来的导入......
有没有更好的方法来解决这个问题?
感谢大家!
解决方案
推荐阅读
- flutter - 字段“位置”尚未初始化
- nuxt.js - 如何使用 Nuxt.js 和 Nuxt Content 无头 CMS 向静态站点添加搜索功能
- python - 如何在带有 pybricks (micropython) 的 VSC 中使用 Intellisense?
- javascript - 将变量传递给 javascript 正则表达式
- google-apps-script - TextStartsWith 时更改行对齐 - Google 表格脚本
- reactjs - 'FunctionComponent 类型上不存在属性 Y
' 即使接口包含属性 Y - react-navigation - React 导航仅在主屏幕上显示选项卡
- c# - ASP .NET Core 日志记录 API 是否具有创建类似于 Serilog“ForContext”方法的独立记录器的方法?
- javascript - 找到摩纳哥的编辑器变量
- javascript - javascript中的键盘数字点击事件