如何在本机执行 pyscript (在网页中执行python)

pyscript可以让使用者在 H5 的网页中执行 python 的语法,目前只是alpha版本,如果透过官方网站执行,速度会很慢,还有可能因为国外网站的关系,导致无法正常运行,所以建议下载 github 的 pyscript 的原始代码,透过Node.js 进行本地端的安装。

下载 pyscript

  1. 直接到 pyscript 的github官网下载 https://github.com/pyscript/pyscript


将下载下来 pyscript-main.zip 的压缩档放在一个新建的文件夹中,比方说 localPyScript

安装Node.js

  1. 下载并安装Node.js,https://nodejs.org/,这部份就不多说了。

安装 rollup 包

  1. 全局安装 rollup
# 查看当前使用的镜像地址,通常是 https://registry.npmjs.org
npm config get registry
# 将镜像地址切换为淘宝镜像,加快安装速度
npm config set registry https://registry.npm.taobao.org
npm install --global rollup

解压缩 pyscript 项目

  1. 解压缩 pyscript-main.zip,并切换到 pyscriptjs 文件夹,并进行安装相关套件。
cd pyscriptjs
npm install

执行 node 服务器

  1. 执行 node 服务器,它会在 examples/build 文件夹中生成需要的 jscss 文件
npm run dev

练习用网页

  1. 建立一个简单的练习用网页 hello_world.html,记得要放在examples 文件夹中,如下图所示。

代码如下,记得设定 pyscript.css 与 pyscript.js 设定为本机端 (http://localhost:8080/build/)。

<!DOCTYPE html>
<html lang="en"><head><meta charset="utf-8" /><meta name="viewport" content="width=device-width,initial-scale=1" /><title>PyScript Hello World</title>
<!-- 这里要特别注意,要进行修改的 --><link rel="stylesheet" href="http://localhost:8080/build/pyscript.css" /><script defer src="http://localhost:8080/build/pyscript.js"></script></head><body>Hello world! <br>This is the current date and time, as computed by Python:<py-script>
from datetime import datetime
now = datetime.now()
now.strftime("%m/%d/%Y, %H:%M:%S")</py-script></body>
</html>

修改 pyscript.js,变更 pyodide.js 的存取位置

  1. 变更 pyodide.js 的存取位置,pyodide是最主要提供能在网页上执行 python 的主要套件,但是因为系统预设使用 https://cdn.jsdelivr.net 這個CDN 服务,但自从 2021 年后 jsdelivr 已经不能在中国内使用,所以需要将存取位置改为 https://pyodide-cdn2.iodide.io。

打开 ./pyscriptjs/examples/build/pyscript.js 文件,修改内容如下,并储存。

const DEFAULT_RUNTIME = {
//src: ‘https://cdn.jsdelivr.net/pyodide/v0.20.0/full/pyodide.js’,
src: ‘https://pyodide-cdn2.iodide.io/v0.20.0/full/pyodide.js’,
name: ‘pyodide-default’,
lang: ‘python’,
};
let appConfig_ = {
autoclose_loader: true,
};

打开网页检视结果

8.打开网页输入 http://localhost:8080/hello_world.html 就可以检视结果了。

最终文件夹说明

pyscript 项目解压缩后的目录结构如下图所示,而我们所有的操作都在 pyscripts 这个文件夹中,当整个服务器运行起来时,是以 pyscripts\examples 为网页服务器的根目录,特别提醒一下,其实 examples 有很多示例可以参考,可以把 examples 中的示例搬到pyscripts\examples,只要修改 pyscript.css 与 pyscript.js 设定为本机端,就可以运行了。


这是内附的范例。

下图是我们这个项目需要修改的文件,pyscript.js 是主要的js执行文件,其中会使用到 pyodide 的功能,所以需要调整网址;hello_world.html 是我们新增的文件,用来展示pyscript的功能。

参考资料

  • pyscript,https://pyscript.net/
  • PyScript,https://github.com/pyscript/pyscript

如何在本机执行 pyscript (在网页中执行python)相关推荐

  1. 在网页中撰写Python程式 - 使用pyscript

    在网页中撰写Python程式 - 使用pyscript 根据 Anaconda 的项目 pyscript,可以将 python 的代码直接写在网页中,目前只支援两种标签,分别是<py-scrip ...

  2. 在网页中执行本地exe程序的两种方式

    一.有时候,需要在 网页上去执行本地的一个EXE文件,如果用javascript ,一般浏览器,由于安全问题,都会禁止掉这个特性.但经过测试,目前在ie,firefox中仍然可以用JS来实现,但在ch ...

  3. php的foreach循环执行过程分析以及循环中执行unset()的一些问题

    文章目录 一.前言 二.foreach的执行过程 1.关于版本不同的foreach变化 2.关于引用计数 3.探寻foreach的运行过程 三.foreach中执行unset()的问题 1.当我们是为 ...

  4. python 执行shell 事务_python中执行shell的两种方法总结

    一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...

  5. php 执行mysql查询_php中执行mysql的常用操作

    连接到mysql服务器: $conn = mysql_connect($host,$user,$password) or die ("连接失败"); mysql_query($co ...

  6. python中执行shell命令_python中执行shell命令的几个方法小结-阿里云开发者社区

    Python 执行 shell 命令 最近有个需求就是页面上执行shell命令,第一想到的就是os.system os.system('cat /proc/cpuinfo') 但是发现页面上打印的命令 ...

  7. oracle执行存储过程06576,Oracle中执行存储过程call和exec区别

    在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是exec是sqlplus命令,只能在sqlplus中 ...

  8. oracle java赋予执行_在oracle中执行java例程

    oracle10g的oralceJVM支撑java1.4. 这让我们能用java做一些ps/sql不容易处理的任务,比如访问http资源等.这篇文章写个实例.首先创建java源码,所有method必须 ...

  9. python中执行sql语句_python中执行sql语句

    来源:疯狂的蚂蚁的博客 总结和整理 本文介绍了 Python 操作 MYSQL.执行 SQL 语句.获取结果集.遍历结果集.取得某个字 段.获取表字段名....... (游标 对象)用于执行查询和获取 ...

最新文章

  1. 浏览器缓存详解:expires,cache-control,last-modified,etag详细说明
  2. [flex]报错,Resource Path Location Type 源路径条目“… Unknown Flex 问题
  3. 用Keepalived搭建高可用集群
  4. winform错误提示 :窗口类名无效(Window class name is not valid)
  5. NOIP模拟测试11「string·matrix·big」
  6. 面试官问我:你们的数据库是怎么架构的?
  7. Linux 建立文件夹的链接
  8. hibernate分页中跳转到第几页的功能
  9. C++多重继承时调用相应的父类函数
  10. 日月如梭,玩转JavaScript日期
  11. dds通信中间件_车内的中间件协议:是面向服务,还是以数据为中心,或是RESTful?...
  12. Java简易小说阅读器
  13. Arcgis操作系列一:shp矢量数据的面积计算
  14. 【软件测试】时制转换时的电话账单
  15. Windows 10 让所有程序默认为“以管理员身份运行”并且取消“确认”按钮
  16. SMCJ系列TVS瞬态抑制二极管型号参数表
  17. 小程序人脸核验功能实现-边读边录(一)
  18. [归并排序]leetcode327:区间和的个数(hard)
  19. 计算机如何删除已连接的打印机驱动程序,怎么删除网上共享的打印机驱动程序...
  20. 应届毕业生不想应聘上班,一心想独自创业,有什么好的项目推荐?

热门文章

  1. 树莓派键盘布局,英式键盘换成美式键盘,解决#@无法输入问题
  2. 企业选择沃创云外呼中心系统的优势是什么?
  3. java 文件进行加密解密,java 对文件加密解密,该如何解决
  4. 青龙面板详细搭建教程
  5. SQLsever附加数据库出错5123添加权限后还是出现错误解决办法
  6. 创新工场汪华:对新媒体创业团队的几个务实建议
  7. 3万字总结 HTML + CSS,还不赶紧学起来✔️
  8. 对浏览器css兼容性的学习理解及问题解决汇总
  9. 追踪调查来自印度的针对中国和南亚国家的大规模APT攻击
  10. [转载] 新兵训练营系列课程——平台服务部署及Web框架