Pip 包依赖覆盖 requirements.txt 中的指定版本

Pip Package dependency overriding specified version in requirements.txt

我得到了一个 Flask 应用程序并从 requirements.txt 安装了依赖项。 运行 我的应用程序出现以下错误:

ImportError: cannot import name 'soft_unicode' from 'markupsafe'

MarkupSafe 是 Jinja2 所需的包,而 Jinja2 又是 Flask 所需的包。

我很快发现将 MarkupSafe 从版本 2.1.1 降级到 2.0.1 可以解决这个问题,并且我调整了我的 requirements.txt:

MarkupSafe==2.0.1 # Newer version causes errors
rpi-ws281x==4.3.3
Flask==2.0.3
Flask-SocketIO==5.1.1

但是在安装之后,我发现 Jinja2 安装过程覆盖了我指定的 MarkupSafe 版本,我再次以 2.1.1 版本结束。我知道 pip 的 force reinstall 选项,但想知道是否有更好的方法。

提前致谢!

使用 pipenv:https://pipenv.pypa.io/.

至少在前段时间,pip在解决多包依赖方面曾经存在一些缺陷。我现在在他们的文档中看到了一个更新说明,似乎可以解决这个问题;还没有测试过。 Pipenv 可以很好地解决依赖关系图。这就是我开始使用 Pipenv 的原因之一。

请查看以下页面: