“__requires__”在python中意味着什么?

时间:2012-12-05 09:36:23

标签: python setuptools

我是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')()
)

1 个答案:

答案 0 :(得分:16)

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

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

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