【问题标题】:How to import library using Brython如何使用 Brython 导入库
【发布时间】:2016-10-12 14:46:08
【问题描述】:

我希望在 Brython 中导入我自己的库。 This page of the documentation 声称显示如何通过将适当的目录添加到 python 路径,但我无法使其工作,因为我无法让 Brython 导入 sys

这是 Brython 文档第一页中最简单的示例代码:

<html>
<head>
<script src="../src/Brython3.2.8/brython.js"></script>
</head>
<body onload="brython()">
<script type="text/python">
  from browser import document, alert

  def echo(ev):
    alert(document["zone"].value)

  document['mybutton'].bind('click', echo)
</script>
<input id="zone"><button id="mybutton">click !</button>
</body>
</html>

而且效果很好。

但如果我尝试导入 sys:

<html>
<head>
<script src="../src/Brython3.2.8/brython.js"></script>
</head>
<body onload="brython()">
<script type="text/python">
  import sys
  from browser import document, alert

  def echo(ev):
    alert(document["zone"].value)

  document['mybutton'].bind('click', echo)
</script>
<input id="zone"><button id="mybutton">click !</button>
</body>
</html>

然后html会显示,但按钮不会做任何事情。

Chrome 上的控制台显示以下错误:

brython.js:6929 XMLHttpRequest cannot load file:///C:/Users/XXXXXXXXX/XXXXXX/src/Brython3.2.8/Lib/sys.py?v=1476283159509. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
    $download_module    @ brython.js.6929
    import_py           @ brython.js.6929
    exec_module         @ brython.js.6929
etc etc

那么,如何在 brython 中导入 sys,和/或如何在 python 中导入我自己的库?

谢谢。

【问题讨论】:

    标签: python brython


    【解决方案1】:

    您需要在 html 代码中包含 brython_stdlib.js。所以你的 html 应该是这样的:

    <html>
        <head>
            <script src="../src/Brython3.2.8/brython.js"></script>
            <script src="../src/Brython3.2.8/brython_stdlib.js"></script>
        </head>
        <body onload="brython()">
            <script type="text/python">
                import sys
                from browser import document, alert
    
                def echo(ev):
                    alert(document["zone"].value)
    
                document['mybutton'].bind('click', echo)
            </script>
            <input id="zone"><button id="mybutton">click !</button>
       </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      源代码:https://github.com/imvickykumar999/Brython/blob/master/index.html#L36

      部署代码:https://imvickykumar999.github.io/Brython/

      <!doctype html>
      <html>
      
      <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Brython</title>
      
        <script
          type="text/javascript"
          src="https://cdn.jsdelivr.net/npm/brython@3.8.9/brython.min.js">
        </script>
      
        <script
          type="text/javascript"
          src="https://cdn.jsdelivr.net/npm/brython@3.8.9/brython_stdlib.js">
        </script>
      
        <link
          rel="stylesheet"
          href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css"
          integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk"
          crossorigin="anonymous">
      
      </head>
        <body onload="brython()">
      
          <style>
          body {
              /* background-color: yellow; */
              background-image: url(https://images.unsplash.com/photo-1573196872258-41425124bf5d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1050&q=80);
      /*         background-repeat: no-repeat; */
          }
          </style>
      
          <script type="text/python">
      
            from browser import document
      
            def calc(a, b, o):
              d = { '+' : a+b,
                    '-' : a-b,
                    '*' : a*b,
                    '/' : a/b,
                    '%' : a%b
                  }
      
              return f"({a}{o}{b})=({d[o]})"
      
            a = float(input('Enter first number : '))
            b = float(input('Enter second number : '))
            o = input('Enter the Operator (+,-,*,/,%) : ')
      
            document <= calc(a, b, o)
      
          </script>
        </body>
      </html>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-25
        相关资源
        最近更新 更多