如何使用 Pipenv 指定多个 sys_platforms
How to specify multiple sys_platforms with Pipenv
我正在尝试使用 Pipenv
来指定特定的软件包仅安装在 Linux 或 Mac 上。
根据 pep496,我应该可以在需求文件中做这样的事情。
unicon; sys_platform == 'linux' or sys_platform == 'darwin'
这是等效的 Pipfile
部分的样子。
[packages]
requests = "*"
unicon = {version = "*", sys_platform = "== 'linux' or == 'darwin'"}
这将创建一个 Pipfile.lock
,没有错误,但也没有任何标记信息。
从 windows 安装时,它应该跳过尝试安装 unicorn
但它没有,并且没有 windows 的独角兽版本,所以我收到安装错误。
我意识到我可能会让事情变得简单,然后就去做 sys_platform = "!= 'win32'"
但我想明确说明平台。
有什么in ['linux', 'darwin']
方法可以做到这一点吗?
我找到了 不 在 Linux 上安装 pypiwin32 的方法。我必须指定另一个未在我的 requirements.txt 中列出的依赖项:pywin32
此外,我使用了 os_name 标记:
pypiwin32 = { version = "==223", os_name = "=='nt'"}
pywin32 = {version = "*", os_name = "=='nt'"}
并且这两个包需要Pipfile中的markers
:
"markers": "os_name == 'nt'",
现在可以使用 pipenv 安装了。
使用 markers
而不是 sys_platform
,PEP 496 示例中的语法可用于在 Pipfile
中指定多个平台:
[packages]
unicon = {version = "*", markers = "sys_platform == 'linux' or sys_platform == 'darwin'"}
我正在尝试使用 Pipenv
来指定特定的软件包仅安装在 Linux 或 Mac 上。
根据 pep496,我应该可以在需求文件中做这样的事情。
unicon; sys_platform == 'linux' or sys_platform == 'darwin'
这是等效的 Pipfile
部分的样子。
[packages]
requests = "*"
unicon = {version = "*", sys_platform = "== 'linux' or == 'darwin'"}
这将创建一个 Pipfile.lock
,没有错误,但也没有任何标记信息。
从 windows 安装时,它应该跳过尝试安装 unicorn
但它没有,并且没有 windows 的独角兽版本,所以我收到安装错误。
我意识到我可能会让事情变得简单,然后就去做 sys_platform = "!= 'win32'"
但我想明确说明平台。
有什么in ['linux', 'darwin']
方法可以做到这一点吗?
我找到了 不 在 Linux 上安装 pypiwin32 的方法。我必须指定另一个未在我的 requirements.txt 中列出的依赖项:pywin32
此外,我使用了 os_name 标记:
pypiwin32 = { version = "==223", os_name = "=='nt'"}
pywin32 = {version = "*", os_name = "=='nt'"}
并且这两个包需要Pipfile中的markers
:
"markers": "os_name == 'nt'",
现在可以使用 pipenv 安装了。
使用 markers
而不是 sys_platform
,PEP 496 示例中的语法可用于在 Pipfile
中指定多个平台:
[packages]
unicon = {version = "*", markers = "sys_platform == 'linux' or sys_platform == 'darwin'"}