Pipenv:是否无条件安装了特定于平台的程序包的依存关系?

时间:2019-08-01 18:33:53

标签: python pipenv

我正在尝试将pipenv集成到我的新项目中,因为我仅需要一些依赖来进行开发,而我找不到一种简单的方法来使用pip或{{ 1}}。

但是,尝试时遇到了一个问题:

我的项目在Windows中使用时取决于venv。因为它是Windows依赖项,所以我使用命令安装了它:

pypiwin32

成功通过平台限制将此依赖项添加到我的pipenv install "pypiwin32 ; platform_system == 'Windows'"

Pipfile

问题在于# Pipfile [[source]] name = "pypi" url = "https://pypi.org/simple" verify_ssl = true [dev-packages] # dependencies... [packages] # dependencies... pypiwin32 = {markers = "platform_system == 'Windows'",version = "*"} [requires] python_version = "3.7" 依赖于pypiwin32软件包,当我查看pywin32文件时,我发现它不仅限于Windows:

Pipfile.lock

这很奇怪。我通过将限制更改为'Linux'并尝试在没有# Pipfile.lock "pypiwin32": { "index": "pypi", "markers": "platform_system == 'Windows'", "version": "==223" }, "pywin32": { "version": "==224" }, 的情况下将依赖项安装到新环境中进行了测试,并且它按预期忽略了Pipfile.lock,但尽管如此,它还是安装了pypiwin32它没有在pywin32中列出,并且是被忽略的软件包的依存关系。

这是一个严重的问题,因为如果我决定在linux机器上进行部署或开发,由于Pipfile在linux或mac上不可用(据我所知),它将根本无法工作。

有没有一种方法可以使用软件包的限制来正确标记软件包的依赖关系?

我不想手动编辑pywin32(我也不认为它会起作用,因为当我尝试将其安装到新环境中时,仅复制了Pipfile.lock)。 / p>

或者,还有更好的方法来管理我的依赖项吗?我需要指定不会在生产环境中安装的开发依赖项,并且需要指定特定于平台的依赖项的能力。据我所知,Pipfilepip不能处理第一个请求,这就是为什么我尝试切换到requirements.txt的原因。

我尝试查找没有成功。任何帮助将不胜感激。

0 个答案:

没有答案