为什么我安装的应用程序处理pkg_resources.iter_entry_points的方式与源代码不同?

时间:2014-03-10 19:21:35

标签: python setuptools pkg-resources

我有一个Python应用程序,通过pkg_resources.iter_entry_points查找插件。

直接从结帐退出时,会在sys.path中找到符合条件的任何内容,包括恰好有.egg-info setuptools来查找的源检查。

然而,当我通过python setup.py install在任何地方安装软件包时,它突然停止检测sys.path中枚举的所有内容,而只是在site-packages中查找与其一起安装的内容。

  • 为什么pkg_resources.iter_entry_points对于vanilla source checkout v。已安装的应用程序的行为有所不同?
  • 如何让它遍历sys.path中的所有内容,就像在开发中一样?

1 个答案:

答案 0 :(得分:1)

  1. 如何让它迭代sys.path?

    pkg_resources.WorkingSet(None).iter_entry_points

  2. 为什么表现不一样?可能是因为已安装的软件包至少会强制关于自身的元数据进入内存。看看代码,我的猜测是你的主模块有一个需要属性,但这只是一个有根据的猜测。无论如何,要在开发过程中强制“安装”行为,运行python setup.py develop

  3. 就足够了