Skip to main content
 首页 » 编程设计

python之导入语句中带有斜杠的任意 python 名称

2025年05月04日9kerrycode

浏览了相关问题,但找不到这个具体答案。

我们将 python 嵌入到我们的应用程序中,并添加了一个到 sys.meta_path 的钩子(Hook) 允许导入任意命名的模块。 (也就是说,模块定义不驻留在磁盘上,而是在包内 的内存中定义)。

这允许这样的事情:

import my_module_1#2#31421 

甚至:

__import__("my_module_1#2#31321") 

当特定标签本身包含斜杠时会出现问题。

import my_module_1/123/56 

或

__import__("my_module_1/123/56") 

它甚至在读取我的 meta_path 钩子(Hook)之前就产生了以下错误。

ImportError:不支持按文件名导入。

我也尝试过类似的东西:

import imp imp.load_source('my_module_1', '123/56') 

但同样,这甚至没有到达 meta_path Hook 。 我需要传递的任意名称实际上类似于“路径”,但不涉及磁盘路径。

有人有什么建议吗?

非常感谢, 罗布。

请您参考如下方法:

好吧,一个明显的解决方法是在源代码中使用一些不同的字符,例如管道,并让你的钩子(Hook)用斜杠替换这些字符。不过,这或多或少会很痛苦,具体取决于您的具体需求。

例如

import lol|foo 

钩子(Hook)的第一行看起来像

module_name = module_name.replace ('|', '/')