gpt4 book ai didi

python - 如何评估 PEP-508 风格的平台标记?

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:53 25 4
gpt4 key购买 nike

我想以编程方式评估 PEP-508 风格的平台标记,例如 platform_system == 'Windows'。实现解析器并不是很有挑战性,但我假设 pip 中有一个。它叫什么,如何在我自己的脚本中导入和使用它?

最佳答案

pkg_resources

pkg_resources(setuptools 包的一部分)提供标记评估功能。

In [1]: from pkg_resources import evaluate_marker

In [2]: evaluate_marker('sys_platform == "darwin"')
Out[2]: True

In [3]: evaluate_marker('python_version > "3.7"')
Out[3]: False

In [4]: evaluate_marker('implementation_name == "cpython"')
Out[4]: True

In [5]: evaluate_marker('garbage')
Traceback (most recent call last):

File "/Users/hoefling/Library/Python/3.7/lib/python/site-packages/IPython/core/interactiveshell.py", line 2961, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)

File "<ipython-input-2-69434540d2ec>", line 1, in <module>
evaluate_marker('garbage')

File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pkg_resources/__init__.py", line 1372, in evaluate_marker
raise SyntaxError(e)

File "<string>", line unknown
SyntaxError: Invalid marker: 'garbage', parse error at 'garbage'

等等

打包

在幕后,pkg_resources.evaluate_marker 使用 packaging.markers.Marker.evaluate来自 packaging包,因此您可以改用它:

In [6]: from packaging.markers import Marker

In [7]: Marker('"linux" in sys_platform').evaluate()
Out[7]: False

关于python - 如何评估 PEP-508 风格的平台标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53417969/

25 4 0
文章推荐: node.js - 类型错误 : Cannot read property '_id' of undefined in Angular4
文章推荐: javascript - 将弹出窗口放在屏幕底部(而不是浏览器窗口底部)
文章推荐: node.js - 使用 NodeJS 执行和停止 shell 命令
文章推荐: ios - 如何在 iOS Safari(在实际设备上)中将 "crop"关闭屏幕
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com