首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Pipenv指定多个sys_platforms

如何使用Pipenv指定多个sys_platforms
EN

Stack Overflow用户
提问于 2018-12-10 17:47:32
回答 2查看 3.3K关注 0票数 10

我试图使用Pipenv来指定一个特定的包,以便只在Linux或Mac上安装。根据pep496,我应该能够在需求文件中执行类似的操作。

代码语言:javascript
复制
unicon; sys_platform == 'linux' or sys_platform  == 'darwin'

这就是等效的Pipfile部分的样子。

代码语言:javascript
复制
[packages]
requests = "*"
unicon = {version = "*", sys_platform = "== 'linux' or == 'darwin'"}

这将创建一个没有错误但也没有任何标记信息的Pipfile.lock。当从windows安装时,应该跳过尝试安装unicorn,但是它没有,并且没有用于windows的独角兽版本,所以我得到了一个安装错误。

我意识到我可能会让事情变得简单,只需做sys_platform = "!= 'win32'",但我想要对平台进行明确的说明。

有什么in ['linux', 'darwin']的方法可以做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-14 11:14:20

使用markers而不是sys_platform,可以使用PEP 496示例中的语法在Pipfile中指定多个平台。

代码语言:javascript
复制
[packages]
unicon = {version = "*", markers = "sys_platform == 'linux' or sys_platform == 'darwin'"}
票数 4
EN

Stack Overflow用户

发布于 2020-01-10 14:44:47

我找到了一种在Linux上安装而不是安装pypiwin32的方法。我必须指定requirements.txt中没有列出的另一个依赖项:pywin32

此外,我还使用了os_name标记:

代码语言:javascript
复制
pypiwin32 = { version = "==223",  os_name = "=='nt'"}
pywin32 = {version = "*",   os_name = "=='nt'"}

这两个包需要Pipfile中的markers

代码语言:javascript
复制
 "markers": "os_name == 'nt'",

使用pipenv的安装现在可以工作了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53710974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档