我正在尝试使用Pipenv
指定一个特定的程序包,使其仅安装在Linux或Mac上。
根据{{3}},我应该能够在需求文件中执行类似的操作。
unicon; sys_platform == 'linux' or sys_platform == 'darwin'
这就是等效的Pipfile
部分的样子。
[packages]
requests = "*"
unicon = {version = "*", sys_platform = "== 'linux' or == 'darwin'"}
这将创建一个Pipfile.lock
,没有错误,但也没有任何标记信息。
从Windows安装时,应该跳过尝试安装unicorn
的操作,但是没有安装,并且没有针对Windows的unicorn版本,因此出现安装错误。
我意识到我可能可以使事情变得简单,只需执行sys_platform = "!= 'win32'"
,但我想明确说明平台。
是否有in ['linux', 'darwin']
种方式做到这一点?
答案 0 :(得分:0)
我刚刚找到了一种在Linux机器上不安装 pypiwin32 的方法
我必须指定我的需求中未列出的另一个依赖项: pywin32
我还使用了 os_name 标记:
pypiwin32 = { version = "==223", os_name = "=='nt'"}
pywin32 = {version = "*", os_name = "=='nt'"}
最后,这两个软件包在pipfile中具有标记:
"markers": "os_name == 'nt'",
并且pipenv的安装有效
因此请检查最终依赖项
如果还不晚,希望对您有帮助
答案 1 :(得分:0)
使用 markers
而不是 sys_platform
,可以使用 PEP 496 示例中的语法在 Pipfile
中指定多个平台:
[packages]
unicon = {version = "*", markers = "sys_platform == 'linux' or sys_platform == 'darwin'"}