2019年3月20日 星期三

[ Python 常見問題 ] How to import a module given the full path?

Source From Here 
Question 
How can I load a Python module given its full path? Note that the file can be anywhere in the filesystem, as it is a configuration option. 

How-To 
Consider you have a python module under C:/tmp/test.py
  1. def add(x, y):  
  2.     return x + y  
  3.   
  4. class Add:  
  5.     def __init__(self, x):  
  6.         self.x = x;  
  7.   
  8.     def __call__(self, y):  
  9.         return self.x + y  
For Python 3.5+ use importlib
  1. In [1]: import importlib.util  
  2.   
  3. In [2]: spec = importlib.util.spec_from_file_location('test.add'"C:/tmp/test.py")  
  4.   
  5. In [3]: spec.__class__  
  6. Out[3]: _frozen_importlib.ModuleSpec  
  7.   
  8. In [4]: foo = importlib.util.module_from_spec(spec)  
  9.   
  10. In [5]: foo.__class__  
  11. Out[5]: module  
  12.   
  13. In [7]: spec.loader.exec_module(foo)  
  14.   
  15. In [8]: foo.add(12)  
  16. Out[8]: 3  
  17.   
  18. In [10]: a = foo.Add(2)  
  19. In [12]: a(3)  
  20. Out[12]: 5  
For Python 3.3 and 3.4 use: 
  1. from importlib.machinery import SourceFileLoader  
  2.   
  3. foo = SourceFileLoader('test.add'"C:/tmp/test.py").load_module()  
  4. foo.add(12)  # Output 3  
Python 2 use: 
  1. import imp  
  2.   
  3. foo = imp.load_source('test.add'"C:/tmp/test.py")  
  4. foo.add(12)  # Output 3  
There are equivalent convenience functions for compiled Python files and DLLs. 

See also. http://bugs.python.org/issue21436. 

Supplement 
FAQ - How to import other Python files?

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...