2009-12-04 26 views
1

我的项目能够远程运行python函数。这样做需要发送给定功能的模块。确定要发送的内容是通过修改的模块查找器进行的。路径挂钩的声望(PEP 302定制导入)

当我修改modulefinder以支持任意path_hooks时,我开始感觉到path_hooks并不是那么受欢迎。快速谷歌代码搜索似乎只显示使用它们的ZipImporter。我注意到使用它的一个小项目(即使这样,它的加载程序也不支持get_code的PEP 302扩展,这是修改后的模块搜索器所需要的)。

是否有人遇到过或创建过使用自定义path_hooks访问源代码的项目?

回答

2

是的,我编写了一些路径挂钩(出于其中一个显而易见的目的:访问除了文件系统和zip文件之外的其他存储形式的模块),但从来没有在开源项目上(实际上并不需要支持模块查找器)。你遇到什么困难?尽管我无法分享我的原始代码,但我认为我可以分享使用它开发的专有技术(尽管我不记得任何特殊困难 - 这已经有一段时间了)。对于“流行”,我想他们将与“其他地方”(例如以某种形式的数据库)对站点模块的需求成正比,尽管当然一般的“用户模式文件系统”是例如构建的。使用fuse,macfusedokan也可能允许这样做(并且在通用性方面提供其他优势 - 不确定性能如何比较)。

+0

支持任意path_hooks的主要问题是能够:A)读取模块的源代码而不导入它; B)跟踪更改。 如果get_code扩展由PEP 302加载器实现,则解决A.我怀疑自定义路径挂钩不这样做。 对于B,我目前做时间戳(如python)。 ZipImporter拥有归档属性。为了支持任意代码,需要对代码进行校验和;而且,如果自定义挂钩很少使用,跟踪系统就不值得开发。 – UsAaR33

+0

并感谢您的答案。你的回应和缺乏任何其他(或票)符合我的直觉,他们是非常罕见的。 – UsAaR33