On 04/04/2016 12:15, Peter Otten wrote: ..........
In the example section they have (for 3.4 and above) spec = importlib.util.spec_from_file_location(module_name, file_path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) The importlib with all its factories is a bit intimidating; perhaps it's best to stick with imp.load_source() and wait for some simple helper functions to appear...
.... maybe two steps ahead :( when I execute the example with python 3.4.2
C:\code\hg-repos\reportlab>cat tmp\t1.py import importlib.util import sys # For illustrative purposes. import tokenize file_path = tokenize.__file__ module_name = tokenize.__name__ spec = importlib.util.spec_from_file_location(module_name, file_path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) # Optional; only necessary if you want to be able to import the module # by name later. sys.modules[module_name] = module C:\code\hg-repos\reportlab>\python34\python tmp\t1.py Traceback (most recent call last): File "tmp\t1.py", line 10, in <module> module = importlib.util.module_from_spec(spec) AttributeError: 'module' object has no attribute 'module_from_spec'
The example does work in python 3.5.0 so I guess the docs are a bit misleading. -- Robin Becker -- https://mail.python.org/mailman/listinfo/python-list