Python 如何禁止将程序包添加到Pipenv.lock并由Pipenv安装?

Python 如何禁止将程序包添加到Pipenv.lock并由Pipenv安装?,python,django,pip,pipenv,Python,Django,Pip,Pipenv,有两个包提供了名为jsonfield的模块: 不幸的是,我们有依赖于两个包和两个包的依赖项,虽然可以交换,但将数据以不同的方式存储到数据库中。这导致了一场灾难。此外,不幸的是,Pipenv在安装依赖项时没有任何确定的操作顺序。有时安装django jsonfield,有时安装jsonfield。这意味着有时我们的应用程序会随机中断,因为安装的是jsonfield,而不是django jsonfield 有没有办法禁止将django jsonfield添加到Pipenv.lock中,这样就

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

不幸的是,我们有依赖于两个包和两个包的依赖项,虽然可以交换,但将数据以不同的方式存储到数据库中。这导致了一场灾难。此外,不幸的是,Pipenv在安装依赖项时没有任何确定的操作顺序。有时安装
django jsonfield
,有时安装
jsonfield
。这意味着有时我们的应用程序会随机中断,因为安装的是
jsonfield
,而不是
django jsonfield


有没有办法禁止将
django jsonfield
添加到
Pipenv.lock
中,这样就只能安装
jsonfield
。。。除了在每次生成后手动编辑
Pipfile.lock
,目前我所知没有一个干净的解决方案

你真的应该和罪魁祸首项目的开发者谈谈:

  • jsonfield
    django jsonfield
    应为其顶级软件包商定不同的名称
  • 或者依赖于
    jsonfield
    django jsonfield
    的项目应该在两者中的一个上达成一致,而放弃另一个
您可能对本次讨论感兴趣,并最终参与: . 您尤其感兴趣的是,
pip
允许在安装新软件包时覆盖已安装的软件包


未经测试:

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

django-jsonfield = { markers="python_version < '2'" }
django jsonfield={markers=“python_version<'2'}

此处给出的示例(您指定特定软件包仅安装在某些系统上)可能会有所帮助:使用标记可以工作。不幸的是,“假”似乎不起作用。