40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | # encoding: utf-8 | ||
|  | """
 | ||
|  | A simple utility to import something by its string name. | ||
|  | """
 | ||
|  | 
 | ||
|  | # Copyright (c) yap_ipython Development Team. | ||
|  | # Distributed under the terms of the Modified BSD License. | ||
|  | 
 | ||
|  | 
 | ||
|  | def import_item(name): | ||
|  |     """Import and return ``bar`` given the string ``foo.bar``.
 | ||
|  | 
 | ||
|  |     Calling ``bar = import_item("foo.bar")`` is the functional equivalent of | ||
|  |     executing the code ``from foo import bar``. | ||
|  | 
 | ||
|  |     Parameters | ||
|  |     ---------- | ||
|  |     name : string | ||
|  |       The fully qualified name of the module/package being imported. | ||
|  | 
 | ||
|  |     Returns | ||
|  |     ------- | ||
|  |     mod : module object | ||
|  |        The module that was imported. | ||
|  |     """
 | ||
|  |      | ||
|  |     parts = name.rsplit('.', 1) | ||
|  |     if len(parts) == 2: | ||
|  |         # called with 'foo.bar....' | ||
|  |         package, obj = parts | ||
|  |         module = __import__(package, fromlist=[obj]) | ||
|  |         try: | ||
|  |             pak = getattr(module, obj) | ||
|  |         except AttributeError: | ||
|  |             raise ImportError('No module named %s' % obj) | ||
|  |         return pak | ||
|  |     else: | ||
|  |         # called with un-dotted string | ||
|  |         return __import__(parts[0]) |