2016-08-12 4 views
2

friends.a.py как получить b.py модульConfused о __import__ в Python3

fileA 
    ├── fileB 
    │ ├──a.py 
    │ └── b.py 
    └── fileC 
      └── c.py 

В a.py файл, я могу использовать этот код, чтобы получить функцию от b.py и запустить его:

module = __import__('b') 
fun = getattr(module, 'run') 
fun() 

Как я могу получить функцию c.py в a.py?

+0

Завершить этот вопрос. Не ответьте. –

+0

Возможный дубликат [Как импортировать модуль с полным путем?] (Http://stackoverflow.com/questions/67631/how-to-import-a-module-given-the-full-path) –

ответ

0

End вопрос. Я нашел, что кто-то задал этот же вопрос. ссылка: How to import a module given the full path?

Его ответ: Для Python 3.5 и более поздней использования:

import importlib.util 
spec = importlib.util.spec_from_file_location("module.name", "/path/to/file.py") 
foo = importlib.util.module_from_spec(spec) 
spec.loader.exec_module(foo) 
foo.MyClass() 

Для Python 3.3 и 3.4: использование (. Хотя это было устаревшим в Python 3.4)

from importlib.machinery import SourceFileLoader 

foo = SourceFileLoader("module.name", "/path/to/file.py").load_module() 
foo.MyClass() 

Python 2 использование:

import imp 

foo = imp.load_source('module.name', '/path/to/file.py') 
foo.MyClass() 

Существуют эквивалентные функции удобства для скомпилированных файлов и библиотек Python.

См. Также. http://bugs.python.org/issue21436.