gpt4 book ai didi

python - Pipenv:无条件安装平台特定包的依赖项?

转载 作者:行者123 更新时间:2023-12-03 17:13:27 24 4
gpt4 key购买 nike

我正在尝试整合 pipenv进入我的新项目,因为我只需要一些开发依赖项,我找不到一种简单的方法来使用 pip 获得额外的开发依赖项或 venv .

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

我的项目依赖于 pypiwin32当它在 windows 中使用时。因为它是 Windows 依赖项,所以我使用以下命令安装了它:
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包,当我查看 Pipfile.lock文件我看到它不仅限于 Windows:
# Pipfile.lock

"pypiwin32": {
"index": "pypi",
"markers": "platform_system == 'Windows'",
"version": "==223"
},
"pywin32": {
"version": "==224"
},

这很奇怪。我通过将限制更改为“Linux”并尝试将依赖项安装到没有 Pipfile.lock 的新环境中来测试它。它忽略了 pypiwin32正如预期的那样,但它安装了 pywin32无论如何,尽管它没有在 Pipfile 中列出并且它是一个被忽略的包的依赖项。

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

有没有办法用包的限制正确标记包的依赖关系?

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

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

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

最佳答案

添加平台特定的安装 pypiwin32pywin32 pipfile 中明确的包应该可以解决这个问题。

pypiwin32 = {version = "*", sys_platform = "== 'win32'"}
pywin32 = {version = "*", sys_platform = "== 'win32'"}

先决条件包 pywin32在这种情况下,在 linux 上也将被忽略。

关于python - Pipenv:无条件安装平台特定包的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57315096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com