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

Ben*_*ack 8 python setuptools pkg-resources

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

当直接从源结账运行时,这将找到sys.path适合账单的任何内容,包括恰好适用.egg-infosetuptools查找的源检出.

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

  • 为什么pkg_resources.iter_entry_pointsvanilla source checkout v.已安装的应用程序的行为有所不同?
  • 我怎样才能让它遍历所有内容sys.path,就像在开发中一样?

yac*_*143 2

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

    pkg_resources.WorkingSet(None).iter_entry_points

  2. 为什么它的行为不同?可能是因为安装的软件包至少强制将有关其自身的元数据放入内存中。查看代码,我的猜测是您的主模块有一个require属性,但这只是一个有根据的猜测。无论如何,要在开发时强制“安装”行为,运行应该足够了python setup.py develop