加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

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

发布时间:2020-05-23 11:37:32 所属栏目:程序设计 来源:互联网
导读:我有一个 python项目,我们称之为foobar,项目根目录中有一个setup.py脚本,就像所有 Python项目一样.例如 foobar setup.py setup.py文件内容: from ez_setup import use_setuptoolsuse_setuptools()from setuptools import setup, find_packagesset

我有一个 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',[])

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读