我正试图使用Pipenv
来指定一个仅在Linux或Mac上安装的特定软件包。根据pep496,我应该能够在需求文件中做这样的事情。
unicon; sys_platform == 'linux' or sys_platform == 'darwin'
这就是等效的Pipfile
部分的样子。
[packages]
requests = "*"
unicon = {version = "*", sys_platform = "== 'linux' or == 'darwin'"}
这创建了一个没有错误但也没有任何标记信息的CCD_ 3。当从windows安装时,它应该跳过尝试安装unicorn
,但它没有,而且没有适用于windows的独角兽版本,所以我收到了一个安装错误。
我意识到我可能会让事情变得简单,只做sys_platform = "!= 'win32'"
,但我想明确平台。
有什么in ['linux', 'darwin']
的方法可以做到这一点吗?
使用markers
而不是sys_platform
,PEP 496示例中的语法可用于指定Pipfile
:中的多个平台
[packages]
unicon = {version = "*", markers = "sys_platform == 'linux' or sys_platform == '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进行安装了。