整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Python 开发者的 10 大编程开发环境(IDE),第一款是我的最爱

于程序员来说,除了日常争论世界上最好的语言是哪一门以外,哪款 IDE 是最好的也是争议颇多,今天我们就来介绍 10 款最好的 Python 编程 IDE,总有一款适合你!

经典推荐

  • 再见英文版,Python 速查表中文版来了
  • 年终推荐:李宏毅《机器学习》40讲真香

什么是 IDE?

私信小编01即可获取大量Python学习资源

IDE 代表集成开发环境,它是一个 GUI(图形用户界面),程序员可以在其中编写代码并生成最终产品。IDE 基本上统一了软件开发和测试所需的所有基本工具,这反过来又帮助程序员最大化输出。一些 IDE 是通用的,也就是说它们可以支持多种语言,例如,Sublime Text、Atom、Visual Studio 等。同样特定语言的 IDE 支持特定语言,它们还可以帮助我们了解语法错误等信息,比如:用于 Python 的 Pycharm、用于 Java 的 Jcreator、用于 Ruby/Rails 的 RubyMine 等等

10 大 IDE

一个完备的 IDE 应该包括以下内容:

  • 代码编辑器:提供代码编辑器来编写和操作源代码,代码编辑器可以是独立的应用程序,也可以集成到 IDE 中
  • 语法高亮:提供此功能以用不同的颜色和字体标记基本语言的语法
  • 自动补全代码:旨在最大限度地减少时间消耗,自动完成功能代码或建议程序员需要出现哪些变量、参数或代码位
  • 调试器:调试器是测试和调试源代码所需的工具
  • 编译器:编译器是将源代码从一种语言翻译成另一种语言的组件,编译器通常执行预处理、词法分析、代码优化和代码生成任务
  • 语言支持:IDE 可以是特定于语言的,也可以支持多种语言

PyCharm

PyCharm 由捷克公司 JetBrains 开发,是一个特定于 Python 的 IDE,是一个跨平台的 IDE。因此,用户可以根据自己的需要下载任何 Windows、Mac 或 Linux 版本来使用。可以说,PyCharm 被认为是 Python 最好的 IDE 之一,并且是使用最广泛的

除了常见功能外,PyCharm 还提供了其他功能,例如:

  • 专业的项目视图允许在文件之间快速切换
  • 与 Django、Flask 和 web2py 一起快速进行 Web 开发
  • PyCharm 配备了 1000 多个插件,程序员也可以编写自己的插件来扩展其功能
  • 它提供两个版本供下载,免费的社区版和付费的专业版,一般情况下社区版的功能完全够用

Spyder 是 Pierre Raybaut 于 2009 年开发的开源、跨平台 IDE。主要为数据分析师和科学家设计,被认为是一个用 Python 编写的强大的科学开发 IDE

其主要功能如下:

  • Spyder 与许多科学 Python 库集成,即 SciPy、NumPy、Matplotlib、Pandas 等
  • Spyder 为编辑、分析和数据探索提供高级的支持
  • 它还允许静态代码分析,其中分析是在不实际执行代码的情况下进行的
  • 该 IDE 的功能可以通过其插件系统和 API 进一步扩展

PyDev 最初由 Alex Totic 于 2003 年创建,然后由 Fabio Zadrozny 担任其主要项目负责人。它基本上是一个开源的第三方包,用作 Eclipse 的插件,使其能够用于 Python 开发

PyDev 具有许多特殊功能,例如:

  • 远程调试器(可以调试未在 Eclipse 中启动的文件)
  • 代码折叠(有选择地隐藏或显示代码段)
  • 支持 Python 2.x 和 3.x 语法

Rodeo 是 Yhat 开发的开源 Python IDE,它专为机器学习和数据科学而构建

其主要特色:

  • Rodeo 使得加载数据和比较数据非常方便
  • 允许进行数据实验
  • 配有 Python 教程,指导用户使用
  • 提供 Cheat sheets 供参考
  • 文件和包搜索非常方便

Sublime Text

Sublime-Text 是一个用 C++ 和 Python 开发的跨平台 IDE。除了 Python 之外,它还提供对其他语言的支持。可以使用插件增强此 IDE 的功能

它提供很多功能,例如:

  • 允许快速访问文件、符号或行的“Goto Anything”功能
  • 它的命令面板为键盘调用提供了强大的匹配功能
  • 有基于 Python 的插件 API
  • 允许同时编辑多个文件
  • 可以使首选项进行项目定制

这个 IDE 是由 Wingware 创建的,它是一个轻量级的 IDE,旨在允许快速编程,有三种变体,分别为:

  • Wing Pro – 专业人士的付费版本
  • Wing Personal – 学生和爱好者的免费版本
  • Wing 101 - 初学者的简化免费版本

Wing 提供的特色功能,例如:

  • 自动多进程和子进程调试
  • 远程调试过程
  • 模块浏览器
  • 重构
  • 自动完成也可用于非 Python 文件

Eric Python

Eric 是用 Python 编写的,是免费软件,它的源代码是免费提供的,任何人都可以研究和重新创建

它提供的一些高质量功能,例如:

  • 可格式化的窗口布局
  • 可格式化的语法高亮
  • 代码折叠
  • 配备课堂浏览器
  • 对单元测试的内置支持
  • 对 Django 的内置支持

Atom 是一个使用 Web 技术构建的开源免费 IDE,Atom 基于由 GitHub 构建的 Electron 框架,而后者又是用 CoffeeScript 和 Less 编写的

Atom 的具体特性包括:

  • 启用对第三方包和主题的支持以格式化编辑器
  • 允许安装和管理 Atom 的 APM 包
  • 提供对 Python 以外的多种语言的支持,如 C、C++、Java、HTML 等
  • 包含异常报告包

Thonny 是为初学者开发的 IDE,它为程序员提供了逐步的帮助指南

它具有许多功能,例如:

  • 提供单独的窗口来执行函数调用
  • 行号可供用户跟踪每行
  • 提供用户操作日志,以便日后为用户提供帮助
  • 无需断点的语句步进

IDLE 完全是用 Python 编写的,它是安装好 Python 环境之后默认自带的 IDE 工具。据推测,它的名字是为了纪念 Python 的创始成员之一埃里克·伊德尔(Eric Idle)。由于其简单性,该 IDE 被认为非常适合教育行业

IDLE 还提供了一些显着的功能,例如:

  • 具有语法高亮显示的 python shell 的可用性
  • 多窗口文本编辑器
  • 程序动画或步进(指一次执行一行代码)
  • 断点可用于简化调试
  • 调用堆栈清晰可见

以上就是今天介绍的 10 大 Python 语言 IDE,哪一款是你 pick 的呢

好了,今天分享就到这里,如果大家觉得满意请务必点个 + 在看 支持下

3年前在AWS re:Invent 大会上AWS 宣布推出 Cloud9, 用于在云端编写、运行和调试代码,它可以直接运行在浏览器中,也就是传说中的 Web IDE。3年后的今天随着国内云计算的发展, 各大云计算服务厂商都在部署自己的WEB IDE, 而且已经有非常成熟的落地方案, 对于这一块的技术原理和实现, 也非常值得我们去学习和剖析.

目前比较成熟的WEB IDE方案有CodeSandbox, Cloud Studio等, 接下来笔者将实现一个简单的WEB IDE, 来带大家了解其原理和实现过程.

正文

笔者接下来会介绍WEB IDE的实现原理和应用场景, 并介绍如何在H5-Dooring中使用它.

1. web编辑器实现原理

我们先来看看一个成熟WEB IDE的结构:

抽象出来可以分为3个核心部分: 文件导航区 代码编辑区 * 预览容器

如下图所示:

在把模块抽象出来之后我们来思考具体的功能实现. 对于文件导航区我们可以很容易地使用react/vue的ui库来实现, 对于文件保存, 目录树生成等我们可以使用nodejs + DB(如mysql,Redis)来实现. 代码编辑区我们可以用第三方成熟的库比如react-codemirror2 或者react-monaco-editor来做. 由于预览容器我们不清楚预览类型(如小程序, web页面还是app), 所以这里我们暂时考虑web页面容器, 也就是我们比较熟悉的iframe. 那么我们可以画出如下技术实现图:

实际上WEB IED实现过程远比上面的复杂, 我们这里只做简单的抽象. 我们接下来梳理一下在线代码编辑器的需求: 支持在线编写前端代码(html,javascript,css) 支持实时预览 * 支持代码在线下载

1.1 技术选型

在了解了以上实现方式之后, 我们开始来搭建环境并进行代码开发. 以下列举我们的技术选型: koa 基于nodejs的服务端框架 koa-static 基于koa的静态资源中间件 koa-body 解析请求体的中间件 koa2-cors 处理跨域的中间件 koa-logger 处理请求日志的中间件 react 前端框架 react-codemirror2 代码编辑器 antd 基于react的前端组件库

以下是笔者实现的效果图:


1.2 实现细节

对于以上笔者列出的koa和react的技术方案不熟悉的大家可以先了解一下,笔者这里直接实现具体逻辑。

我们先用umi来创建工程,然后在根目录新建server.js文件。该文件主要用来处理nodejs相关逻辑,在稍后我会详细介绍。

界面的实现笔者不一一介绍了,前端模块笔者来介绍一下如何配置代码编辑器。react-codemirror2基本使用方式如下:

import {UnControlled as CodeMirror} from 'react-codemirror2';
require('codemirror/mode/xml/xml');
require('codemirror/mode/javascript/javascript');

export default function() {
  // ...
  return (
    <CodeMirror
      className={styles.codeWrap}
      value={html}
      options={{
        mode: 'xml',
        theme: 'material',
        lineNumbers: true
      }}
      onChange={handleChange}
      cursor={cursor}
      onCursor={onCursorChange}
    />      
  );
}

通过以上方式我们就能生成一个基本的代码编辑器,需要注意的是我们需要再单独引入对应的主题样式文件:

@import '~codemirror/lib/codemirror.css';
@import '~codemirror/theme/material.css';

为了实现预览功能,笔者之前想了两种方案,一种是直接通过页面组件的方式来实现预览,但是缺点是只有dom和样式更新能生效,如果编写js代码,由于react的内部机制是无法直接执行script的。

另一种方案是iframe,这种方案可以很好地隔离react和预览代码,实现机制如下:

也就是说我们在代码编辑器里编辑完代码之后统一通过请求的方式保存在node端,然后通过iframe请求nodejs渲染的静态页面来实现预览功能。有点类似服务端渲染的感觉。

那么如何保证实时预览呢?这块完全可以设计成用户手动点击预览,也是笔者最初的设想,但是为了增强用户体验,笔者决定采用实时预览, 也就是用户代码的变化可以实时反应在“预览窗口”。方案就是在onChange中更新state来实现rerender,这一点用react hooks很好实现。但是实时更新对性能很不友好, 所以为了提高预览性能和页面体验,笔者在这里使用防抖来控制请求频次和时机。代码如下:

const handleChange = (editor, data, value) => {
  fetchPage(value)
}

const fetchPage = (v) => {
  if(timer) clearTimeout(timer);
  timer = setTimeout(() => {
    fetch('http://localhost:80/dooring/render', {method: 'POST', body: v}).then(res => {
      html = v
      setUpdate(prev => !prev)
    });
  }, 1000);
}

在开发中还遇到同一个问题就是iframe每刷新一次,代码编辑器的光标都会被重置,这一点对用户在线coding的体验非常不好,所以笔者又看了一遍官方文档,找到了cursor这个有意思的api,中文的意思就是说可以手动设置光标停止的位置,那么我们在每次光标变化的时候都强制设置为当前光标所在的位置,那么就不会应为iframe刷新的影响而被迫触发失焦动作了。 代码实现如下:

const onCursorChange = (editor, data) => {
  const { line, ch } = data
  setCursor({ line, ch })
}
// ...
<CodeMirror
  className={styles.codeWrap}
  value={html}
  options={{
    mode: 'xml',
    theme: 'material',
    lineNumbers: true
  }}
  onChange={handleChange}
  cursor={cursor}
  onCursor={onCursorChange}
/>

至此我们的核心功能就实现了,如下图:

H5-Dooring

对于界面中的下载html功能以及一件部署的功能都比较简单,笔者已将代码提交到github,感兴趣的可以学习了解一下。

1.3 服务端实现

服务端实现主要是写请求接口来存储html页面以及直出html页面,对于跨域请求我们还需要处理跨域问题, 由于代码逻辑比较简单, 这里笔者的实现代码如下:

// server.js
const Koa  = require('koa');
const { resolve } = require('path');
// const staticServer = require('koa-static');
const koaBody = require('koa-body');
const cors = require('koa2-cors');
const logger = require('koa-logger');
const fs = require('fs');

const app = new Koa();
app.use(koaBody());
app.use(logger());

// 设置跨域
app.use(cors({
  origin: function (ctx) {
      if (ctx.url.indexOf('/dooring') > -1) {
        return '*'; // 允许来自所有域名请求
      }
      return '';
  },
  exposeHeaders: ['WWW-Authenticate', 'Server-Authorization', 'x-test-code'],
  maxAge: 5,  //  该字段可选,用来指定本次预检请求的有效期,单位为秒
  credentials: true,
  allowMethods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
  allowHeaders: ['Content-Type', 'Authorization', 'Accept', 'x-requested-with', 'Content-Encoding'],
}));

let htmlStr = ''

app.use(async (ctx, next) => {
  console.log(ctx.url);
  if(ctx.url === '/dooring/render') {
    htmlStr = ctx.request.body;
    ctx.body = 'success';
  }else if(ctx.url.indexOf('/html') === 0) {
    ctx.type = "html";
    ctx.body = htmlStr;
  }
});  

app.listen(80);

2. 应用场景

对于在线coding的应用场景,笔者大致举几个应用场景。比如说我们在H5-Dooring编辑器中,要实现用户自定义组件库或者自定义h5页面,并实时下载预览,我们可以直接使用它,如下:

H5-Dooring

其次,对于需要部署和实时修改的网站,如果上线之后需要快速修改部署,我们可以直接在线coding之后一键部署。对于个人技术博客来说也是可以实现在线编辑和在线一键部署,这样我们就无需依赖特定环境和特定电脑了。对于更多强大的应用,对于企业级来说,也可以实现在线coding的方式写服务端代码,在线写sql。比如云开发,云计算领域催生的在线saas协作等。

3. 总结

以上教程笔者的一个简单版本,基本上可以实现在线写前端代码,对于一些更复杂的功能,通过合理的设计也是可以实现的,大家可以自行探索,笔者已将在线编写H5页面的代码和逻辑集成到H5-Dooring项目里,大家可以自行下载学习。

github地址:H5-Dooring

最后

如果想学习更多H5游戏, webpack,node,gulp,css3,javascript,nodeJS,canvas数据可视化等前端知识和实战,欢迎在《趣谈前端》一起学习讨论,共同探索前端的边界。

欲善其事,必先利其器。Python的学习过程少不了集成开发编辑环境(IDE)。这些Python IDE会提供插件、工具等帮助开发者加快使用Python开发的速度,提高效率。这里收集了一些对开发者非常有帮助的Python IDE(来自hittp://doc.okbase.net/havoc/archive/242858.html)。这些IDE的相关介绍如下所示。

1.Pydev+Eclipse——最好的免费Python IDE

Pydev是Python IDE中使用最普遍的,原因很简单,它是免费的,同时还提供很多强大的功能来支持高效的Python编程。Pydev是一个运行在Eclipse上的开源插件,它把Python带进了Eclipse的王国,如果你本来就是一个Eclipse的用户,那么Pydev将带给你家一样的感觉。如果还不是,Pydev也值得你一试。

Pydev能受到人们的欢迎得益于这些关键功能:Django集成、自动代码补全、多语言支持、集成的Python调试、代码分析、代码模板、智能缩进、括号匹配、错误标记、源代码控制集成、代码折叠、UML编辑和查看,以及单元测试整合。

Pydev是由AleksTtotic在2004年创建的,现在由Fabio Zadrozny 进行维护。Pydev在社区用户的帮助,以及Liclipse、Squish、TraceTronic等公司或社团的赞助下持续进行更新。虽然Pydev是最好的开源Python IDE,但是它也和另一个名为Liclipse的产品一起打包。Liclipse是一个商业产品,同样也构建在Eclipse上,提供了易用性改进和额外的主题选项。

除了CPython,Pydev也支持Jython and IronPython,下载Pydev的网址为pydev.org/download.html。

2.PyCharm——最好的商业 Python IDE

PyCharm是来自JetBrains公司的全功能Python开发环境。在过去的15年里,JetBrains一直致力于发展顶级的开发工具,旨在让开发工作变得轻松和愉快。

PyCharm是专业的Python集成开发环境,共有两个版本。一个是免费的社区版本,另一个是面向企业开发者的更先进的专业版本。PyCharm的普及可以从这一事实来衡量,即有很多大品牌公司用户,像Twitter、Groupon、Spotify、eBay和Telefonica等都在使用PyCharm。

PyCharm大部分的功能在免费版本中都是可用的,包括智能代码补全、直观的项目导航、错误检查和修复、遵循PEP8规范的代码质量检查、智能重构、图形化的调试器和运行器。它还能与IPython notebook 进行集成,并支持Anaconda 及其他的科学计算包,如matplotib和NumPy。

PyCharm专业版本支持更多高级的功能,如远程开发功能、数据库支持以及对Web开发框架的支持等等。

PyCharm最受欢迎的特性是它支持很多第三方Web开发框架,比如Django、Pyramid、web2py、google app engine和Flask,这些也使得它成为一个完整的快速应用集成开发环境。

关于PyCharm的安装和使用可在PyCharm的下载和安装中介绍。

3. VIM

VIM是一个很先进的文本编辑器,在Python开发者社区中很受欢迎。它是一个开源软件,遵循GPL协议,所以你可以免费使用它。

虽然VIM是最好的文本编辑器,但是它提供的功能不仅限于此,经过正确的配置后,它可以成为一个全功能的Python开发环境。此外,VIM还是一个轻量级的、模块化、快速响应的工具,非常适合那些很牛的程序员——编程从不用鼠标的人。

初始化配置需要花费一定的时间,这是因为需要安装一些VIM的插件,并进行配置以使它们能正常工作,最后你会发现这一切都是值得的。如果你在寻找一个Linux系统下的Python IDE,那么VIM将是你的不二选择。

4. Spyder Python

Spyder Python是一个开源的Python集成开发环境,非常适合用来进行科学计算方面的Python开发。它是一个轻量级的软件,是用Python开发的,遵循MIT协议.可免费使用。

Spyder Python的基本功能包括多语言编辑器、交互式控制台、文件查看、variableexplorer、文件查找、文件管理等。Spyder IDE也可以运行于Windows、Mac或者Linux系统之上。

虽然Spyder是一个独立的集成开发环境,能运行在Windows、Mac OS、Linux等系统之上。同时,它也可以作为PyQt的扩展库,可以嵌入PyQt的应用中去。