Python 覆盖第三方包单个文件



覆盖python任何第三方软件包单个文件的最佳方法是什么?

假设。

我有一个名为foo的软件包。Foo 包含具有导入行的文件 tar.py。

tar.py

from xyz import abc
# some code

如何替换单行导入

# from 
from xyz import abc
# to 
from xyz.xy import abc

我想在 Python 项目中更改 virtualenv 之外的这一行

您可以使用包装函数覆盖builtins.__import__,如果包名称等于'xyz',则包名称更改为'xyz.xy'

def my_import(name, *args, **kwargs):
if name == 'xyz':
name = 'xyz.xy'
return original_import(name, *args, **kwargs)
import builtins
original_import = __import__
builtins.__import__ = my_import
from foo import tar

演示:https://repl.it/@blhsing/ComplicatedGrandUnits

最新更新