如何禁止将软件包添加到Pipenv.lock并由Pipenv安装?

时间:2019-09-16 15:00:22

标签: python django pip pipenv

有两个软件包提供了一个名为jsonfield的模块:

不幸的是,我们有依赖关系,依赖于这两个包,这两个包虽然可以互换,但它们以不同的方式将数据存储到数据库中。这导致weird and hard to catch bugs。另外,不幸的是,Pipenv在安装依赖项时没有确定的操作顺序。有时会安装django-jsonfield,有时会安装jsonfield。这意味着有时,由于安装了jsonfield而不是django-jsonfield,我们的应用程序偶尔会中断。

是否有一种方法可以禁止将django-jsonfield添加到Pipenv.lock中,以便仅安装jsonfield

1 个答案:

答案 0 :(得分:2)

从外观上看,您处在一个棘手的情况下……除每次生成jsonfield手动编辑django-jsonfield之外,我目前尚无明确的解决方案。

您确实应该与罪魁祸首项目的开发者交谈:

  • jsonfielddjango-jsonfield的顶级软件包都应使用不同的名称。
  • 或者,依赖于pipdjango-jsonfield = { markers="python_version < '2'" } 的项目应该在两者之一上达成共识,而在另一项目上放弃。

您可能对此讨论感兴趣,并最终参与其中: https://github.com/pypa/packaging-problems/issues/154。在您的情况下,特别有趣的是, Map<String, dynamic> var = {'item': 0, 'name': 'John'} 允许在安装新软件包时覆盖已安装的软件包。


未经测试

您可以尝试在不必要的依赖项上设置一个不太可能的标记:

  Map var = {'item': 0, 'name': 'John'}