我明白进口商协议是在个别进口的水平上运作的。然而,在我的例子中,如果我能在一次完全体验一个路径元素之前知道完整的“点式模块名”(如果允许的话,就是“一个先验的”)从我的导入钩子中完全体验它,这将非常有帮助。在
class myimporter(object):
def find_module(self,fullname,path=None):
if fullname == 'rootnamespace':
#at this moment I need to know the full dotted module name
#that I am going to process (e.g. rootnamespace.foo.bar.baz)
def load_module(self,fullname):
pass
有没有一种方法(希望是安全可靠的)从导入钩子中预先知道完整的“虚线模块名”?在
---更多信息,可能不是真的需要(所以你可以直接跳过回答我;),但是:
如果读者想知道为什么我需要这些信息,或者只是多了解一些有用的信息:我想导入python中的perl模块。这听起来有多奇怪?:)实际上,导入过程只会为perl模块提供一个python存根。存根是通过内省perl包生成的,看看它能提供什么;我不会在这里输入实现的详细信息:
^{pr2}$我的问题在于
import perlmod.www.mechanize
因为我需要事先知道请求的模块是否真的存在于系统的perl安装中,而不必等待完整的模块名,这样我就可以决定是否应该失败。此外,如果用户:
import perlmod.www
在加载了一个www存根包之后,我没有机会回来说“等等,等等,这是错误的”。我的钩子在那之后就不会再叫了。在
基本上,当我的导入钩子被调用为“www”时,我必须已经知道对于完整的虚线模块名,导入是失败还是成功。我就到此为止,详细说明一下,请不要忘记真正的问题:)
非常感谢你,即使只是因为你读了这篇文章。在
目前没有回答
相关问题 更多 >
编程相关推荐