有两个软件包提供了一个名为jsonfield
的模块:
不幸的是,我们有依赖关系,依赖于这两个包,这两个包虽然可以互换,但它们以不同的方式将数据存储到数据库中。这导致weird and hard to catch bugs。另外,不幸的是,Pipenv在安装依赖项时没有确定的操作顺序。有时会安装django-jsonfield
,有时会安装jsonfield
。这意味着有时,由于安装了jsonfield
而不是django-jsonfield
,我们的应用程序偶尔会中断。
是否有一种方法可以禁止将django-jsonfield
添加到Pipenv.lock
中,以便仅安装jsonfield
?
答案 0 :(得分:2)
从外观上看,您处在一个棘手的情况下……除每次生成jsonfield
手动编辑django-jsonfield
之外,我目前尚无明确的解决方案。
您确实应该与罪魁祸首项目的开发者交谈:
jsonfield
和django-jsonfield
的顶级软件包都应使用不同的名称。pip
或django-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'}