Airflow模块附带一个主pip包apache-airflow和多个子包,只安装我们需要的(查看文档https://airflow.incubator.apache.org/installation.html#extra-packages)
我想测试是否安装了一个子包(例如,获取一个bash命令以了解是否安装了apache-airflow[mysql] )。
要知道是否安装了apache-airflow,我可以执行pip show apache-airflow,如果已安装,则获取0作为退出代码,否则获取1。如果我执行pip show apache-airflow['mysql'],我总是得到1作为退出代码,无论是否安装了子包。
我找不到任何解决方案。有什么想法吗?
发布于 2017-07-04 07:42:12
您在这里提到的“子包”称为"setuptools extra“。pip不会将它们记录在文件系统中的任何位置。但是,您可以通过迭代安装元数据并测试是否安装了每个依赖包来检测它们是否已安装。
幸运的是,在pkg_resources中有一个方法,does this for you
我使用jsonschema[format]进行了测试,因为它对我来说很容易安装/卸载。
安装了jsonschema[format]
$ python -c 'import pkg_resources; pkg_resources.require("jsonschema[format]")'
$ echo $?
0没有额外的[format]依赖项
$ python -c 'import pkg_resources; pkg_resources.require("jsonschema[format]")'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 967, in require
needed = self.resolve(parse_requirements(requirements))
File "venv/lib/python3.6/site-packages/pkg_resources/__init__.py", line 853, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'webcolors; extra == "format"' distribution was not found and is required by jsonschema
$ echo $?
1https://stackoverflow.com/questions/44894985
复制相似问题