Код: Выделить всё
path = '/www/code/foo.py'
spec = importlib.util.spec_from_file_location('code.foo', path)
mod = importlib.util.module_from_spec(spec)
sys.path.append('/www')
spec.loader.exec_module(mod)
Этот подход не будет работать с /foo.py. Родительской папки нет, поэтому нет возможности присвоить ему имя модуля, разделенное точками, которое затем можно было бы найти в sys.path.
Если я немного покопаюсь, манипулируя sys.path, __package__ и т. д., я, вероятно, смогу получить что-то для обработки этого конкретного случая, но я понятия не имею, действительно ли это безопасно или нет. Есть ли правильный способ использовать механизм импорта для импорта /foo.py? Или мне просто нужно признать, что я не могу импортировать модули из /, содержащие относительный импорт.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ve-imports
Мобильная версия