Brython: как получить пакеты (математика, время и т. Д. c.) - PullRequest
1 голос
/ 28 мая 2020

Итак, будучи большим поклонником Python, я нашел Brython, который может помочь мне в создании более всеобъемлющего GUI на основе Интернета (у меня sh).

Я нашел демонстрацию часов, которая Решил попробовать локально. Он состоит из двух файлов:

  1. Файл html
  2. Код python часов

Вот часы. html файл:

    <!doctype html>
    <html>

    <head>
        <meta charset="utf-8">
        <script type="text/javascript"
            src="/brython.js">
            src="/brython_stdlib.js">
        </script>
        <script src="clock.py" type="text/python3"></script>
    </head>

    <body onload="brython();">

    </body>

    </html>

И файл clock.py , который здесь только частичный (его можно найти на Brython.info, перейдите по ссылке, чтобы получить полный код):

    import time
    import math
    import datetime

    from browser import document as doc
    import browser.timer

    sin, cos = math.sin, math.cos

    ...

    show_hours()
    set_clock()

Затем я ввел команды:

    mkdir js
    cd js
    python -m brython --install

Наконец, я построил мини-сервер для обслуживания моих файлов:

mini_server.py:

    from flask import Flask, send_from_directory
    app = Flask(__name__, static_folder='.')

    @app.route('/')
    def example():
            return app.send_static_file('clock.html')

    @app.route('/<name>.js')
    def js_files(name):
        return app.send_static_file('js/' + name + '.js')

    @app.route('/<path:path>')
    def all_files(path):
        return app.send_static_file(path)

    if __name__ == '__main__':
        app.debug=True
        app.run()

Итак Я получаю эту структуру:

clock.html
clock.py
mini_server.py
js/brython.js
js/brython_stdlib.js

Теперь моя проблема в том, что при запуске моего сервера и go на http://127.0.0.1: 5000 / часы. html Я получаю:

    Error 404 means that Python module time was not found at url http://127.0.0.1:5000/time.py

Хорошо, я думал, что это будет просто решить, но, глядя на документацию, я нашел только один способ решить:

    python -m brython --add_package time

Но это выдает:

    add package time...
    Traceback (most recent call last):
      File "C:\Program Files\Python36\lib\runpy.py", line 193, in _run_module_as_main
        "__main__", mod_spec)
      File "C:\Program Files\Python36\lib\runpy.py", line 85, in _run_code
        exec(code, run_globals)
      File "C:\Program Files\Python36\lib\site-packages\brython\__main__.py", line 142, in <module>
        main()
      File "C:\Program Files\Python36\lib\site-packages\brython\__main__.py", line 48, in main
        package_file = package.__file__
    AttributeError: module 'time' has no attribute '__file__'

В чем проблема? Как или где мне получить пакеты времени, математики и даты и времени?

Кажется простым, но теперь я отчаянно нуждаюсь в решении.

1 Ответ

1 голос
/ 04 июня 2020

Обнаружил мою проблему:

Мои часы. html было неправильно вставлено, а brython_stdlib. js не был загружен. Математический модуль является частью файла brython_stdlib. js, который должен быть загружен как сценарий в файл html вместе с brython. js. Примерно так:

    <script type="text/javascript" src="/brython.js"></script>
    <script type="text/javascript" src="/brython_stdlib.js"></script>

В моем случае моя вторая команда импорта скрипта имела опечатку и не была загружена (посмотрите на файл clock. html в вопросе). Это выдало консольный вывод, который заставил меня подумать, что математический файл отсутствует:

brython.js:9188 GET http://127.0.0.1:5000/time.py?v=1591284638836 404 (NOT FOUND)
brython.js:9188 GET http://127.0.0.1:5000/time/__init__.py?v=1591284638855 404 (NOT FOUND)
brython.js:9188 GET http://127.0.0.1:5000/Lib/site-packages/time.py?v=1591284638881 404 (NOT FOUND)
brython.js:9188 GET http://127.0.0.1:5000/Lib/site-packages/time/__init__.py?v=1591284638909 404 (NOT FOUND)

Итак, спасибо, и я надеюсь, что любой, кто совершит ту же ошибку, наткнется на этот пост.

...