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

前端之家收集整理的这篇文章主要介绍了如何从setup.py中提取依赖项信息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 python项目,我们称之为foobar,项目根目录中有一个setup.py脚本,就像所有 Python项目一样.例如

> 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',]

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

在我看来,你可以使用mock来完成工作(假设你已经安装了它并且你有所有的setup.py要求……).这里的想法是模拟setuptools.setup并检查它被调用的参数.当然,你真的不需要模拟这样做 – 你可以直接修补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',[])

猜你在找的设计模式相关文章