【PyScript】自作ライブラリをインポートする方法[Python]-未解決

  • URLをコピーしました!
目次

PyScript

前回、PyScriptで標準ライブラリや外部ライブラリをインポートする方法を紹介しました。

今回はPyScriptで自作のライブラリをインポートする方法を紹介します。

ただこの記事を書いている2023年2月現在、私が使用いているサーバー環境では下記プログラムではInternal server error 500(PY0500)のエラーが出てしまい、なんともなりませんでした。

ただVisual Studio CodeのLive serverでは動作が確認できています。

もしVisual Studio CodeのLive serverをご存知ない方はこちらのサイトが参考になります。

ということで今回はLive server限定ですが、とりあえずPyScriptに慣れるためということで、試してみましょう。

py-scriptタグに直接記載する方法

PyScriptで自作のライブラリを使う方法としてはまずpy-scriptタグに直接ファイルの場所を記載する方法が挙げられます。

その場合、「<py-script src=”ファイルのパス”></py-script>」となります。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>
</head>
<body>
    <button py-click="clicked()" id="button">Button</button>
    <div id="text"></div>
<py-script src="./library-1.py">
</py-script>
</body>
</html>
def clicked():
        Element("text").write("Clicked!")

自作ライブラリの読み込みのために使用したpy-scriptタグにPyScriptのプログラムを書き込んだ場合は無視されるようです。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>
</head>
<body>
    <button py-click="clicked()" id="button">Button</button>
    <div id="text1"></div>
    <div id="text2"></div>
<py-script src="./library-4.py">
    Element("text2").write("abc")
</py-script>
</body>
</html>
def clicked():
        Element("text1").write("Clicked!")

もしさらに処理がある場合は別のpy-scriptタグを用意します。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>
</head>
<body>
    <button py-click="clicked()" id="button">Button</button>
    <div id="text1"></div>
    <div id="text2"></div>
<py-script src="./library-3.py"></py-script>
<py-script>
    Element("text2").write("abc")
</py-script>
</body>
</html>
def clicked():
        Element("text1").write("Clicked!")

py-configを使う方法

もう一つは前回にも出てきた「py-config」を使う方法です。

ただ自作ライブラリを読み込むには「[[fetch]]」も追加します。

あとは「files = [“自作ライブラリのパス”]」とし、py-configタグ内でインポートして使います。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>
</head>
<body>
    <py-config>
        [[fetch]]
        files = ["./library4.py"]
    </py-config>

    <button py-click="clicked()" id="button">Button</button>
    <div id="text"></div>
<py-script>
    import library4
    a = 10
    b = 20
    def clicked():
        c = library4.calc(a, b)
        Element("text").write(c)

</py-script>
</body>
</html>
def calc(a, b):
        c = a + b
        return c

ちなみにこのように自作ライブラリをインポートする場合、ライブラリ名には「-(ハイフン)」は使えないようですので、ご注意ください。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>
<py-config>
[[fetch]]
files = ["./library-5.py"]
</py-config>
</head>
<body>
    <button py-click="clicked()" id="button">Button</button>
    <div id="text"></div>
<py-script>
    import library-5
    a = 10
    b = 20
    def clicked():
        c = library-5.calc(a, b)
        Element("text").write(c)

</py-script>
</body>
</html>
def calc(a, b):
        c = a + b
        return c

こちらの例では自作ライブラリを使用した際にエラーが出ていますが、実はインポートもできていません。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>
<py-config>
[[fetch]]
files = ["./library-6.py"]
</py-config>
</head>
<body>
    <button py-click="clicked()" id="button">Button</button>
    <div id="text"></div>
<py-script>
    import library-6

</py-script>
</body>
</html>
def calc(a, b):
        c = a + b
        return c

ライブラリ名に「-(ハイフン)」が使用できないのを初めて知りました。

ここまでで私が使用しているサーバーで動かないのが結構致命的ですが、他にもライブラリの読み込みに関して問題があったので、次回はそのお話をします。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次