21

我是python的新手。

有人可以回答__requires__以下代码中的含义吗?他们为什么要放在__requires__ = 'flower==0.4.0'文件的开头?

#!/srv/virtualenvs/zeusenv/bin/python

__requires__ = 'flower==0.4.0'
import sys
from pkg_resources import load_entry_point

sys.exit(
   load_entry_point('flower==0.4.0', 'console_scripts', 'flower')()
)
4

1 回答 1

27

__requires__行是生成的控制台脚本的一部分。它对 Python 本身没有任何意义,只有setuptools库使用这些信息。

控制台脚本是在 python 包元数据中定义的 python 脚本,并setuptools安装包装脚本文件以让您将它们作为命令行脚本运行。安装在你的 virtualenv 中的flower文件就是这样一个脚本,由flowersetup.py文件定义。

pkg_resources包装脚本中导入的模块检查__requires__ 主脚本中的值,以确保在load_entry_point函数(或任何其他pkg_resources函数)运行之前,库的正确版本可用并加载。它不会安装指定的版本,假定该版本安装在您的系统上。其目的是避免在脚本运行和加载依赖项时加载不正确的、不兼容的资源。

于 2012-12-05T09:50:58.330 回答