如何.py
在Python 3.3+中导入任意python源文件(其文件名可以包含任何字符,但并不总是以结尾)?
我使用imp.load_module
如下:
>>> import imp
>>> path = '/tmp/a-b.txt'
>>> with open(path, 'U') as f:
... mod = imp.load_module('a_b', f, path, ('.py', 'U', imp.PY_SOURCE))
...
>>> mod
<module 'a_b' from '/tmp/a-b.txt'>
它仍然可以在Python 3.3中使用,但是根据imp.load_module
文档,它已被弃用:
从版本3.3开始不推荐使用:不需要,因为应该使用装载程序来装载模块,并且不建议使用find_module()。
和imp
模块文档建议使用importlib
:
注意新程序应使用importlib而不是此模块。
在不使用不推荐使用的imp.load_module
功能的情况下,在Python 3.3+中加载任意python源文件的正确方法是什么?
imp.load_module()
直接的import语句。您是否希望以后通过名称导入模块(例如import a_b
)?您是否担心这种方法不会使用任何自定义进口商?您是否希望该模块具有全功能(例如define__name__
和__loader__
)?