Pynecone —— 纯 Python 全栈 Web 框架
Pynecone 是一个全栈 Python 框架,可以使用纯 Python 构建高性能、可自定义的 Web 应用程序。
Pynecone 应用程序示例
下面是一个围绕 DALL·E 创建 UI 的示例,这个示例调用了 OpenAI 的 DALL·E API,但您可以在本地将其替换为任何 ML 模型。
下面是创建它的完整代码,这一切都在一个 Python 文件中完成!
import pynecone as pc import openai openai.api_key = "YOUR_API_KEY" class State(pc.State): """The app state.""" prompt = "" image_url = "" image_processing = False image_made = False def process_image(self): """Set the image processing flag to true and indicate image is not made yet.""" self.image_processing = True self.image_made = False def get_image(self): """Get the image from the prompt.""" response = openai.Image.create(prompt=self.prompt, n=1, size="1024x1024") self.image_url = response["data"][0]["url"] self.image_processing = False self.image_made = True def index(): return pc.center( pc.vstack( pc.heading("DALL·E", font_size="1.5em"), pc.input(placeholder="Enter a prompt..", on_blur=State.set_prompt), pc.button( "Generate Image", on_click=[State.process_image, State.get_image], width="100%", ), pc.divider(), pc.cond( State.image_processing, pc.circular_progress(is_indeterminate=True), pc.cond( State.image_made, pc.image( src=State.image_url, height="25em", width="25em", ) ) ), bg="white", padding="2em", shadow="lg", border_radius="lg", ), width="100%", height="100vh", bg="radial-gradient(circle at 22% 11%,rgba(62, 180, 137,.20),hsla(0,0%,100%,0) 19%)", ) # Add state and page to the app. app = pc.App(state=State) app.add_page(index, title="Pynecone:DALL·E") app.compile()
Pynecone 中的 UI
从用户界面开始。
def index(): return pc.center( ... )
此index
函数定义应用程序的前端。可使用不同的组件,例如center
、vstack
、input
和button
来构建前端。组件可以相互嵌套以创建复杂的布局。您可以使用关键字参数来使用 CSS 的全部功能来设置它们的样式。
Pynecone 附带60 多个内置组件。
状态
class State(pc.State): """The app state.""" prompt = "" image_url = "" image_processing = False image_made = False
状态定义了应用程序中可以更改的所有变量(称为 vars)以及更改它们的函数。这里的状态由prompt
和组成image_url
。还有布尔值image_processing
和image_made
指示何时显示循环进度和图像。
事件处理器
def process_image(self): """Set the image processing flag to true and indicate image is not made yet.""" self.image_processing = True self.image_made = False def get_image(self): """Get the image from the prompt.""" response = openai.Image.create(prompt=self.prompt, n=1, size="1024x1024") self.image_url = response["data"][0]["url"] self.image_processing = False self.image_made = True
在状态中定义了称为事件处理程序的函数来更改状态变量。事件处理程序是在 Pynecone 中修改状态的方式。可以调用它们以响应用户操作,例如单击按钮或在文本框中键入,这些动作称为事件。
我们的DALL·E。应用程序有两个事件处理程序,process_image
用于指示正在生成图像和get_image
调用 OpenAI API。
路由
最后定义应用程序并告诉它使用什么状态。
app = pc.App(state=State)
添加一条从应用程序根目录到索引组件的路由,还添加了一个标题,该标题将显示在页面预览/浏览器选项卡中。
app.add_page(index, title="Pynecone:DALL-E") app.compile()
安装
Pynecone 需要以下内容才能开始:
- Python 3.7+
- Node.js 12.22.0+ (不必编写任何 Javascript)
$ pip install pynecone
创建您的第一个 Pynecone 应用程序
安装 Pynecone 也会安装pc
命令行工具,可通过创建一个新项目来测试安装是否成功。
将 my_app_name 替换为自己的项目名称:
$ mkdir my_app_name $ cd my_app_name $ pc init
第一次运行此命令时,会自动下载并安装bun 。
此命令会在您的新目录中初始化模板应用程序,可以在开发模式下运行此应用程序:
$ pc run
应用程序将在 http://localhost:3000 上运行。现在可以修改my_app_name/my_app_name.py
.
Pynecone 具有快速刷新功能,可以在保存代码时立即看到更改。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 软件高可用实践那些事儿
作者:京东零售 刘慧卿 一 前言 关于软件的高可用,是一个老生常谈的话题。“高可用性”(High Availability)通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。其计算公式是:可用率=(总时间-不可用时间)/总时间。 本文重点从落地实践的视角作为切入点,带领大家从协作效率,技术落地和运营规范几个方面来展现高可用的实施步骤和落地细节。为了方便理解,先来统一语言话术,看一下软件交付过程中的各个阶段,如下图: 为什么说软件的高可用会面临着诸多挑战呢? ◦ 从需求交付链路来看,要完成目标交付,需要产品,研发,测试,运维,运营等多方利益相关者的密切配合。有些项目需求,合作者有时能够达到上百人,每个人职责分工各不相同,但却相互配合依赖,任何一个环节出现纰漏,可用率就有可能受到影响; ◦ 从时间角度来看,如果要达到全年99.99%的可用率,就意味着一年当中,允许有故障的时间为:365*24*60*(100%-99.99%)=52分钟,如果要达到5个9的可用率,允许故障的时间仅为5分钟,这差不多是我们发现问题后,重启应用的耗时; ◦ 从迭代效率来看,不迭...
- 下一篇
ipmitool 开发者账号被 GitHub 无故封锁,项目被归档
Ipmitool 是一种可用在 Linux 系统下的 IPMI平台管理工具,但出于GitHub 方面的原因,该项目正处于开发停滞状态。其 GitHub 仓库目前已被标识为“public archive”,且并没有任何相关的解释公告发布。 在没有任何警告的前提下,项目开发人员 Alexander Amelkin 的账号已被 GitHub 封锁。Alexander Amelkin 自 2018 年以来一直在维护 ipmitool,他在ipmitool 的旧 SourceForge 页面表示: 很抱歉,但在 3 月 1 日,在没有任何事先通知或任何解释的情况下。GitHub 已经暂停了我的个人账户,并使我拥有/维护的所有项目成为“孤儿”。 这包括 ipmitool 和 frugen。 这个邮件列表和旧的 sourceforge 项目页面是我留下的唯一与你们沟通的方式。我目前正在寻找一种方法来解除对我的 GitHub 的封锁,或者(不太优选的是)将 ipmitool 再次迁移到另一个不那么敌对的服务。 如今时间已经过去了两周,Amelkin 的账号封锁和所维护的所有开源项目被归档的状态仍没有任...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启