Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с импортом другого файла в код python

Родион Перкин Ученик (94), на голосовании 1 год назад
У меня есть основной скрипт main.py
и второй файл под названием mode.md в котором тоже скрипт питона но там нужные мне функции, их много по этому поместил их отдельно.
Задача а том что если я пропишу в main.py
 from mode import function 
Он выдает т ошибку что нету такого модуля, но если я переименую файл с mode.md на mode.py то он его импортирует, но мне нужно чтобы файл был под расширением .md , и он спокойно импортироваться, как это сделать???
Помогите пожалуйста!!!
Голосование за лучший ответ
Александор Заградский Мудрец (14720) 1 год назад
В Python по умолчанию ожидается, что модули будут иметь расширение .py. Однако, если вы хотите импортировать модуль с расширением .md, вам придется использовать специальные средства, чтобы указать Python, как обрабатывать такие файлы. Вот один из возможных способов сделать это:

В вашем основном файле main.py, добавьте следующий код в начало файла:

 import importlib.machinery 

def import_md_module(name, path):
loader = importlib.machinery.SourceFileLoader(name, path)
spec = importlib.util.spec_from_loader(name, loader)
module = importlib.util.module_from_spec(spec)
loader.exec_module(module)
return module
Затем, вместо использования обычного import, используйте эту функцию для импорта модуля:

 mode_module = import_md_module('mode', 'path/to/mode.md') 
from mode import function
Обратите внимание, что вы должны заменить 'path/to/mode.md' на фактический путь к вашему файлу mode.md. Это позволит вам использовать модуль с расширением .md.

Однако, стоит отметить, что использование расширения .md для Python-модулей не является стандартной практикой, и это может вызвать путаницу у других разработчиков. Возможно, лучше переименовать файл в .py или выбрать другой способ организации кода.

Или такой вариант:
В Python, обычно файлы с расширением .py рассматриваются как модули, и при импорте ищутся именно они. Если у вас файл имеет расширение .md, Python не будет его автоматически распознавать как модуль. Однако, вы можете попробовать использовать следующий способ:

Создайте файл с именем mode.md.
Откройте файл __init__.py в том же каталоге, что и mode.md. Если его нет, создайте пустой файл с именем __init__.py.
Теперь попробуйте импортировать функции из mode.md в main.py с помощью:

python

from mode import function

На практике это создает пакет Python, который включает в себя mode.md как один из модулей. Файл __init__.py не обязательно должен содержать код, но его наличие сообщает Python, что каталог следует рассматривать как пакет.

Если это не сработает, вам, возможно, придется использовать файлы с расширением .py, так как Python ожидает, что модули будут именно с этим расширением.
Похожие вопросы