- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一些能够抵抗 __import__
被更改的代码,因为 the Pydev debugger overrides __import__ .
所以,我需要一种访问内置 __import__
函数的方法。
>>> def fake_import(*args, **kwargs): pass # some other implementation here
...
>>> import __builtin__
>>> __builtin__.__import__ = fake_import
# can I recover the original value of __import__ here?
SO 上有关于 recovering removed built-ins 的问题但在这种情况下,全局已被替换。
最佳答案
这是一个有点棘手的问题,因为 python 不会对重新加载 __builtin__
感兴趣。模块,因为它没有改变。您将被迫删除 __builtin__
module 以便强制 python 重新导入它。您也可以绕过__import__
通过使用importlib
(仅在 python3 中如此,在 python2 中 importlib
求助于 __import__
)。
import sys
import importlib
import __builtin__ as old_builtins
class ExampleImporter(object):
old_import = __import__
def __init__(self):
self.count = 0
def new_import(self, *args, **kwargs):
self.count += 1
print(args, kwargs)
return self.old_import(*args, **kwargs)
importer = ExampleImporter()
old_builtins.__import__ = importer.new_import
assert __import__ == importer.new_import
# remove builtins from modules so as to force its reimport
del sys.modules["__builtin__"]
# in python3 the following bypasses __import__ entirely, but not in python2
new_builtins = importlib.import_module("__builtin__")
# restore initial state of __builtin__ module (will not delete new names
# added to __builtin__)
old_builtins.__dict__.update(new_builtins.__dict__)
# Replace new __builtin__ with old __builtin__ module. Otherwise you'll end up with a
# mess where different modules have different a __builtin__ module.
sys.modules["__builtin__"] = old_builtins
del new_builtins
assert __import__ == importer.old_import
assert importer.count == 1 # would be 0 in python3
关于python - 覆盖 __import__ 后是否可以恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28607701/
我现在正在尝试编码挑战。我之前无法更改代码del __builtins__.__dict__["__import__"] 但之后必须使用 import。我需要一种方法来恢复默认的 __builtins
这是我检查__import__()性能的地方 In [9]: %%timeit ...: math = __import__('math') ...: sqrt = math.sqrt
Python 允许使用别名导入,通过 ...as import 语句中的子句,如下所示: import mymodule as somealias from myothermodule import
假设我有一个包含以下文件的模块包。一个空文件 C:\codes\package\__init__.py 和一些重要文件: 一个位于C:\codes\package\first.py def f():
这个问题在这里已经有了答案: How can I import a module dynamically given its name as string? (10 个答案) 关闭 9 年前。 我在
我正在尝试导入一个模块,同时传递一些全局变量,但它似乎不起作用: 文件 test_1: test_2 = __import__("test_2", {"testvar": 1}) 文件 test_2:
__import__() 函数用于动态加载类和函数 。 如果一个模块经常变化就可以使用 __import__() 来动态载入。 语法 __import__ 语法: __import__(na
我正在尝试编写一些能够抵抗 __import__ 被更改的代码,因为 the Pydev debugger overrides __import__ . 所以,我需要一种访问内置 __import__
我的目录结构是这样的: |- project |- commands.py |- Modules | |- __init__.py | |- base.py | \- build.
我正在为嵌套 matplotlib (MPL) 库编写文档(个人),该文档与 MPL 自己提供的文档不同,由感兴趣的子模块包提供。我正在编写 Python 脚本,希望能够在未来的 MPL 版本中自动生
我的目录结构如下: root/ __main__.py files/ __init__.py foo.py bar.py
我有一个名为 jiva_tasks 的包,我试图通过 celery 导入它(使用 celeryconfig 的 CELERY_IMPORTS 属性。celery 使用的导入语句是这样的: __impo
这里是这个测试中的文件: main.py app/ |- __init__.py |- master.py |- plugin/ |- |- __init__.py |- |- p1.p
我正在查看一些包含两个 __import__ 语句的代码,第二个 __import__ 语句不起作用,除非第一个语句已经运行。 目录结构是这样的: dir1 |-__init__.py |-sub
我正在尝试使用 __import__ 函数从 foo.bar import object 复制 ,但我似乎碰壁了。 一个更简单的例子 from glob import glob 很简单:glob =
使用 __import__ 执行以下操作以便我可以动态指定模块的最佳方法是什么? from module import * 最佳答案 我找到的唯一方法: module = __import__(mod
当使用带点名称的 __import__ 时,例如:somepackage.somemodule,返回的模块不是 somemodule,无论返回什么似乎大多是空的!这是怎么回事? 最佳答案 来自 __i
当我动态导入派生类时,我需要重写 python 中的 __import__ 函数。 (我只能访问基类代码)。例如: Servers=[] class ServerBase(object): n
当a.py有这段代码时: class A(): def __init__(self): print 'hi' 我在这段代码中使用 A 类: import a b = a.A()
对不起,通用标题,一旦我了解了问题的根源,就会更改它我有以下结构: foo/ foo/__init__.py foo/bar/ foo/bar/__init__.py foo/bar/some_mod
我是一名优秀的程序员,十分优秀!