При использовании Pyscript не удаётся подключить код из отдельного питон-файла

Создал примитивный пример написания слов задом-наперед, включающий html-страницу, js-скрипт и python-код. Задача: использовать питон-код в нескольких файлах (выделить модуль). Проблема: не срабатывает импорт модуля. File "", line 6, in ModuleNotFoundError: No module named 'mypack'

Пробовал и так и сяк и прописывал в html и ещё что-то и toml-файл. Мне вероятно не хватает общего понимания как это работает.

    <!DOCTYPE html>
    <html class="device-computer" lang="ru">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Тестовый сайт</title>
        <meta name="description" content="" />
        <script defer src="script.js"></script>
        <script defer src="https://pyscript.net/latest/pyscript.js"></script>
        <py-script src="main.py"></py-script>
        <link rel="stylesheet" href="/theme/css/style.css">
    </head>
    <body>
        <div class="input-text">
            <label>Поле ввода</label>
            <textarea class="mv-text" rows="5" cols="60" placeholder="Введите текст" value="">
    абырвалг
            </textarea >
        </div>
    
        <button class="run">run</button>
    
        <div class="ready-html">
            <label>Результат отражения</label>
            <div class="html-display">▓▓▓▒░░░░░░░░░░░</div>
        </div>
    </body>
    </html>
    /*
    Всё начинается с питон-скрипта. Он передаёт в яваскрипт возможность запуска функции def start_convert;
    Ну и заодно запускает первичную обработку текстового поля.
    Яваскрипт отслеживает действия пользователя, передаёт Питону исходный текст и получает html
    */
    // Забираем глобальные переменные и функции из Питона
    function createObject(object, variableName){
        //Bind a variable whose name is the string variableName
        // to the object called 'object'
        let execString = variableName + " = object"
        console.log("Running '" + execString + "'");
        eval(execString)
    }
    
    // конвертируем по нажатию кнопки
    document.querySelector('.run').addEventListener("click", main);
    
    
    // ---
    var htext
    function main(){
        htext = convertToHtml(getMvText());
        // convertToHtml это вызов в питоне def start_convert(text)
        displayHtml(htext);
        //displayHtmlCode(htext)
    }
    
    // получаем текст из поля ввода
    function getMvText(){
        let mvText = document.querySelector('.mv-text');
        let markvan_text = mvText.value;
        return markvan_text;
    }
    
    // отображаем результат конвертации
    function displayHtml(html){
        let htmlDispl = document.querySelector('.html-display');
        htmlDispl.innerHTML = html;
    }


    import js
    from pyodide.ffi import create_proxy
    
    # !? не могу импортировать свой модуль, что делать?
    from mypack import x
    
    # === Конвертер
    def start_convert(text):
        res = text[::-1]
        #res += x.test()
        return res
    
    # ===
    # передаём яваскрипту возможность вызвать функцию
    js.createObject(create_proxy(start_convert), "convertToHtml")
    
    # запускаем в js первичную обработку текста при загрузке страницы
    from js import main
    main()
    
    if __name__ == '__main__':
        start_convert('rstrst rst rs\n"""\n111')

И чтобы это всё заработало нужно скачать папку с Pyscript (Кнопка install и там ссылка download) https://pyscript.net/install


Ответы (0 шт):