C # Защитить программное обеспечение [закрыто]

Я придумал слегка измененную версию замечательного ответа @ SebastianRittau (для Python> 3.4, я думаю), который позволит вам загружать файл с любым расширением в качестве модуля, используя spec_from_loader вместо spec_from_file_location :

from importlib.util import spec_from_loader, module_from_spec
from importlib.machinery import SourceFileLoader 

spec = spec_from_loader("module.name", SourceFileLoader("module.name", "/path/to/file.py"))
mod = module_from_spec(spec)
spec.loader.exec_module(mod)

Преимущество кодирования пути в явном SourceFileLoader состоит в том, что механизм не будет пытаться выяснить тип файла из расширения. Это означает, что вы можете загружать что-то вроде файла .txt с помощью этого метода, но вы не могли бы сделать это с помощью spec_from_file_location без указания загрузчика, потому что .txt не находится в importlib.machinery.SOURCE_SUFFIXES .

-9
задан Ryu 25 October 2016 в 16:12
поделиться