作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试基于 imp
重新实现一些代码要使用的模块importlib
反而。 imp.find_module
函数之间存在细微差别和 importlib.find_loader
:
# Using imp find_module
>>> import imp
>>> imp.find_module("abc", ["some/path/module.py"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python3.3/imp.py", line 220, in find_module
raise ImportError(_bootstrap._ERR_MSG.format(name), name=name)
ImportError: No module named 'abc'
# Using import find_loader
>>> import importlib
>>> loader = importlib.find_loader("abc", ["some/path/module.py"])
>>> loader.path
'/usr/lib64/python3.3/abc.py'
importlib
正在回退到系统库,而
imp.find_module
正在使用
path
以独占方式参数,最终引发异常。
importlib.find_loader
专门使用特定路径?
最佳答案
这取决于您的代码的确切目标。首先,这两个调用都是错误的,因为“路径”参数是目录列表,而不是特定文件。
其次,从标准库返回 abc,因为它已经在 sys.modules 中。请记住,importlib.find_loader() 会找到指定模块的加载器,因此包括查找 sys.modules['abc'].__loader__
跳过不必要地寻找它。如果您在标准库中指定了一个尚未导入的模块(例如 tokenize),那么 importlib.find_loader() 将返回 None。
换句话说,importlib.find_loader() 将在“路径”中指定时在特定目录中搜索模块,但您必须查找尚未导入的内容。
关于python-importlib - 如何强制 importlib find_loader 专门使用特定路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15622875/
我正在尝试基于 imp 重新实现一些代码要使用的模块importlib反而。 imp.find_module 函数之间存在细微差别和 importlib.find_loader : # Using i
我是一名优秀的程序员,十分优秀!