为什么我的安装应用处理pkg_resources.iter_entry_points与源代码不同?
我有一个用Python写的应用,它通过 pkg_resources.iter_entry_points
来寻找插件。
当我直接从源代码运行这个应用时,它会在 sys.path
中找到所有符合条件的东西,包括一些源代码的检查,这些检查恰好有适用的 .egg-info
,这样 setuptools
就能找到它们。
但是,当我通过 python setup.py install
在任何地方安装这个包时,它突然就不再检测 sys.path
中的所有内容了,而只找到那些和它一起安装在 site-packages
里的东西。
- 为什么
pkg_resources.iter_entry_points
在直接运行源代码和安装后的应用中表现得不一样? - 我该怎么做才能让它像在开发时那样遍历
sys.path
中的所有内容?
1 个回答
2
如何让它遍历 sys.path?
pkg_resources.WorkingSet(None).iter_entry_points
为什么它的表现会不一样?可能是因为安装的包强制把至少关于它自己的元数据加载到内存中。从代码来看,我猜测你的主模块有一个 requires 属性,但这只是我的推测。无论如何,为了在开发时强制“已安装”的行为,运行
python setup.py develop
应该就足够了。