按路径的Python模块

2024-09-29 23:22:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为mod峎python编写一个最小的替换publisher.py在

基本前提是,它是基于URL方案加载模块:

/foo/bar/a/b/c/d

其中/foo/可能是一个目录,'bar'是/foo中可发布类中公开的bar方法/索引.py. 同样/foo可能映射到/食品bar是暴露类中的一个方法。它的语义并不重要。我有句台词:

^{pr2}$

然后检查模块是否有适当的类/函数/方法。当进程尽可能多地获取剩余的URI数据时,/a/b/c被传递给该方法或函数。在

在我有了/var/www/html/foo之前,这一切都很好/索引.py和/var/www/html/bar/索引.py在

在浏览器中查看时,它是相当随机的索引.py'被选中,即使我将第一个搜索路径设置为'/var/www/html/foo'或'/var/www/html/bar',然后加载了'uuuImport\'index')。我不知道为什么它是通过看似随机的选择找到的。具体表现为:

__name__ is "/var/www/html/foo/index.py"
req.filename is "/var/www/html/foo/index.py"
__file__ is "/var/www/html/bar/index.py"

接下来的问题是,为什么导入要随机选择其中一个索引。如果路径是'/var/www/html',我会理解这一点,但它不是

我可以通过模块对象的绝对路径加载模块吗?无需修改搜索路径. 我在“导入”或“导入”上找不到任何文档新建.module()为了这个。在


Tags: 模块方法函数py路径modindexfoo
1条回答
网友
1楼 · 发布于 2024-09-29 23:22:22

Can I load a module by it's absolute path into a module object? Without modification of sys.path. I can't find any docs on __import__ or new.module() for this.

import imp
import os

def module_from_path(path):
    filename = os.path.basename(path)
    modulename = os.path.splitext(filename)[0]

    with open(path) as f:
        return imp.load_module(modulename, f, path, ('py', 'U', imp.PY_SOURCE))

相关问题 更多 >

    热门问题