gpt4 book ai didi

python - 如何从 setup.py 中提取依赖信息

转载 作者:太空狗 更新时间:2023-10-29 21:24:19 28 4
gpt4 key购买 nike

我有一个 python 项目,我们称它为 foobar,像所有 Python 项目一样,项目根目录中有一个 setup.py 脚本。例如

  • foobar
    • setup.py

setup.py文件内容:

from ez_setup import use_setuptools
use_setuptools()

from setuptools import setup, find_packages
setup(
name='foobar',
version='0.0.0',
packages=find_packages(),
install_requires=[
'spam==1.2.3',
'eggs>=4.5.6',
],
)

我需要使用 Python 从该 setup.py 文件中获取依赖项信息。我想要的部分是

[
'spam==1.2.3',
'eggs>=4.5.6',
]

在上面的例子中。我不想安装这个包,我需要的只是依赖信息。当然,我可以使用正则表达式来解析它,但那样会很丑陋,我也可以使用 Python AST 来解析它,但我认为应该已经有一些工具可以做到这一点。最好的方法是什么?

最佳答案

在我看来,你可以使用 mock 来完成这项工作(假设你已经安装了它并且你拥有所有 setup.py 要求...... ).这里的想法是模拟 setuptools.setup 并检查调用它的参数。当然,您实际上并不需要 mock 来执行此操作——如果需要,您可以直接修改 setuptools ...

import mock  # or `from unittest import mock` for python3.3+.
import setuptools

with mock.patch.object(setuptools, 'setup') as mock_setup:
import setup # This is setup.py which calls setuptools.setup

# called arguments are in `mock_setup.call_args`
args, kwargs = mock_setup.call_args
print kwargs.get('install_requires', [])

关于python - 如何从 setup.py 中提取依赖信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24236266/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com