【问题标题】:Override Python Module覆盖 Python 模块
【发布时间】:2015-04-07 11:55:16
【问题描述】:

我想覆盖现有 Python 应用程序的模块。该应用程序由模块和子模块构成,我已经注册了一个扩展。在扩展中,我想提供一个覆盖原始模块(module.py)的模块(new_module.py)。因此,每当另一个模块导入它时,都会使用我的版本。

/application
    __init__.py
    folder_a
    folder_b
       __init__.py
       folder_b_a
           __init__.py
           module.py
/extension
    __init__.py
    new_module.py

我想这可以通过在 sys 模块中设置来实现,如下所示:

import extension.new_module
sys.modules["application.folder_b.folder_b_a.module"] = extension.new_module

但我不确定将这些行放在哪里。我在所有的 init 文件中都试过了,但它不起作用。还是有别的办法?

【问题讨论】:

标签: python python-2.7


【解决方案1】:

在此处记录:https://docs.python.org/2/using/cmdline.html#envvar-PYTHONSTARTUP

强制 python 通过环境变量加载您的extension,并在该扩展名中加载import sys 并与sys.modules 混淆。

【讨论】:

    猜你喜欢
    • 2018-12-10
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多