【玩转 Cloud Studio】使用Cloud Studio 进行python开发最佳实践

2022-08-22 23:46:38 浏览数 (1)

背景

作为一个Python开发,经常需要把各种pip lib安装到自己的电脑上,导致自己的电脑存储占用越来越多而且越来越卡。如果我们有一个物美价廉的远程开发平台,每个月还有1000分钟(2C4G)免费额度的远程开发平台,可以把lib都安装上去在上面进行开发工作,那不是美滋滋?Cloud Studio就应运而生啦。每个月1000分钟,换算成小时就是41个小时,非常够用了。

官网:https://coding.net/products/cloudstudio

Cloud Studio 是基于浏览器的集成式开发环境(IDE),为开发者提供了一个永不间断的云端工作站。用户在使用 Cloud Studio 时无需安装,随时随地打开浏览器就能使用。通过上面官网打开之后,界面大致是下图,是不是很熟悉~ VSCODE,这我会用!

当然,Cloud Studio不只是可以使用Python进行开发,这篇文章仅挖掘Python的最佳实践。

本文会从数据开发与Web开发两个方向来讲实践方案,当然第一步先是环境配置啦。

环境配置

登录进入Cloud Studio后,在常用模版选择Python。当然如果是多个语言开发就选择All in One,方便快捷。

PS:记得登录,登录之后才有免费的1000分钟/月的额度。

等待一会创建工作空间时间

等了几秒就可看到界面跟Flask Demo啦

如果需要安装我们需要的lib,可以直接在下面的命令行输入,如

pip3 install pandas

即可

当然我们肯定不用担心写的代码会丢失,我们可以使用自带的版本管理组件,将写好的代码保存至Git或者CODING上

Web开发

刚刚我们在demo已经有Flask的demo了,距离一个完整的web项目还差一个web框架,我们这里用vue作为前端框架,实现一个简单的前后端分离;

@vue/cli 4.5.14

yarn 1.22.17

Flask 1.1.2

Python 3.9

安装npm,启动 Vue 服务

$ cd frontend $ npm run server

打开浏览器访问 http://localhost:8080 会有一个 "Wellcome to Your Vue.js App" 的界面。后面对 frontend 项目的修改会自动刷新网页。

下面是如何在 Vue.js(8080) 中调用到 Flask(5000) 的 /api/ping 服务,当前在 frontend 目录中

创建 src/components/Ping.vue 文件,内容为

代码语言:javascript复制
<template>
  <div>
    <p>{{ msg }}</p>
  </div>
</template>
 
<script>
export default {
  name: 'Ping',
  data() {
    return {
      msg: 'Hello!',
    };
  },
};
</script>

编辑 src/router/index.js 文件,高亮行为新加的内容

代码语言:javascript复制
import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from '../views/Home.vue';
import Ping from '../components/Ping.vue';
 
Vue.use(VueRouter);
 
const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
  },
  {
    path: '/about',
    name: 'About',
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () => import(/* webpackChunkName: "about" */ '../views/About.vue'),
  },
  {
    path: '/ping',   # 用来调用 Flask 的 "/api/ping" API
    name: 'Ping',
    component: Ping,
  },
  {
    path: '/ping_xyz', # 这个用来测试,非 Flask 中定义的路由,可被 Vue 进行处理
    name: 'Ping',
    component: Ping,
  },
];
 
const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes,
});
 
export default router;

src/App.vue 的 <template> 中的导航部分删除,内容变为

代码语言:javascript复制
<template>
  <div id="app">
    <router-view/>
  </div>
</template>

浏览器中访问 http://localhost:8080/ping, "Hello!" 显示的还是 src/components/Ping.vue 中 data 的内容

Flask 与 Vue.js 整合

代码语言:javascript复制
from flask import Flask
from config import Config
from flask_cors import CORS

app = Flask(__name__, static_folder='../../dist', static_url_path='/')
app.config.from_object(Config)

CORS(app)

from app import routes

最后运行python3 app.py,大功告成!

数据开发

Jupyter Notebook简介

  • Jupyter Notebook是一款开源的Web应用,类似于Web笔记本,我们可以使用它编写代码、公式、Markdown解释性文本和绘图,并且可以把创建好的文档进行分享。
  • Jupyter Notebook最为方便的功能在于其可以实时运行代码,并且返回代码段的运行结果,支持可视化、IDE等能力,大大提高了模型搭建和分析的效率。
  • 目前已经广泛应用于数据处理、数据模拟、统计建模、机器学习等重要领域。

相信数据开发同学对jupyter notebook是再熟悉不过了,我们用web端的时候,常常有个问题就是没有代码提示、代码补全,也不能像IDE一样去查看源码,需要经常翻文档,很是麻烦。

我们的Cloud Studio当然也支持jupyter notebook功能,可以再工作空间新建一个test.ipynb文件,之后即可享受ipynb即可运行的方便 代码补全与提示的功能,还不占用自己的CPU与内存,写代码也变成一种享受而不是负担了~

在右边的按钮,可以切换python版本,如果我们安装了conda,就可以在这里切换环境啦

点击右下角的Jupyter Server,可以切换运行的Server地址。如果我们有远程的GPU服务器,我们可以在GPU服务器安装好Jupyter服务器之后直接远程过去训练模型。

0 人点赞