При использовании 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