于程序員來說,除了日常爭論世界上最好的語言是哪一門以外,哪款 IDE 是最好的也是爭議頗多,今天我們就來介紹 10 款最好的 Python 編程 IDE,總有一款適合你!
經典推薦
私信小編01即可獲取大量Python學習資源
IDE 代表集成開發環境,它是一個 GUI(圖形用戶界面),程序員可以在其中編寫代碼并生成最終產品。IDE 基本上統一了軟件開發和測試所需的所有基本工具,這反過來又幫助程序員最大化輸出。一些 IDE 是通用的,也就是說它們可以支持多種語言,例如,Sublime Text、Atom、Visual Studio 等。同樣特定語言的 IDE 支持特定語言,它們還可以幫助我們了解語法錯誤等信息,比如:用于 Python 的 Pycharm、用于 Java 的 Jcreator、用于 Ruby/Rails 的 RubyMine 等等
一個完備的 IDE 應該包括以下內容:
PyCharm 由捷克公司 JetBrains 開發,是一個特定于 Python 的 IDE,是一個跨平臺的 IDE。因此,用戶可以根據自己的需要下載任何 Windows、Mac 或 Linux 版本來使用。可以說,PyCharm 被認為是 Python 最好的 IDE 之一,并且是使用最廣泛的
除了常見功能外,PyCharm 還提供了其他功能,例如:
Spyder 是 Pierre Raybaut 于 2009 年開發的開源、跨平臺 IDE。主要為數據分析師和科學家設計,被認為是一個用 Python 編寫的強大的科學開發 IDE
其主要功能如下:
PyDev 最初由 Alex Totic 于 2003 年創建,然后由 Fabio Zadrozny 擔任其主要項目負責人。它基本上是一個開源的第三方包,用作 Eclipse 的插件,使其能夠用于 Python 開發
PyDev 具有許多特殊功能,例如:
Rodeo 是 Yhat 開發的開源 Python IDE,它專為機器學習和數據科學而構建
其主要特色:
Sublime-Text 是一個用 C++ 和 Python 開發的跨平臺 IDE。除了 Python 之外,它還提供對其他語言的支持。可以使用插件增強此 IDE 的功能
它提供很多功能,例如:
這個 IDE 是由 Wingware 創建的,它是一個輕量級的 IDE,旨在允許快速編程,有三種變體,分別為:
Wing 提供的特色功能,例如:
Eric 是用 Python 編寫的,是免費軟件,它的源代碼是免費提供的,任何人都可以研究和重新創建
它提供的一些高質量功能,例如:
Atom 是一個使用 Web 技術構建的開源免費 IDE,Atom 基于由 GitHub 構建的 Electron 框架,而后者又是用 CoffeeScript 和 Less 編寫的
Atom 的具體特性包括:
Thonny 是為初學者開發的 IDE,它為程序員提供了逐步的幫助指南
它具有許多功能,例如:
IDLE 完全是用 Python 編寫的,它是安裝好 Python 環境之后默認自帶的 IDE 工具。據推測,它的名字是為了紀念 Python 的創始成員之一埃里克·伊德爾(Eric Idle)。由于其簡單性,該 IDE 被認為非常適合教育行業
IDLE 還提供了一些顯著的功能,例如:
以上就是今天介紹的 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中使用它.
我們先來看看一個成熟WEB IDE的結構:
抽象出來可以分為3個核心部分: 文件導航區 代碼編輯區 * 預覽容器
如下圖所示:
在把模塊抽象出來之后我們來思考具體的功能實現. 對于文件導航區我們可以很容易地使用react/vue的ui庫來實現, 對于文件保存, 目錄樹生成等我們可以使用nodejs + DB(如mysql,Redis)來實現. 代碼編輯區我們可以用第三方成熟的庫比如react-codemirror2 或者react-monaco-editor來做. 由于預覽容器我們不清楚預覽類型(如小程序, web頁面還是app), 所以這里我們暫時考慮web頁面容器, 也就是我們比較熟悉的iframe. 那么我們可以畫出如下技術實現圖:
實際上WEB IED實現過程遠比上面的復雜, 我們這里只做簡單的抽象. 我們接下來梳理一下在線代碼編輯器的需求: 支持在線編寫前端代碼(html,javascript,css) 支持實時預覽 * 支持代碼在線下載
在了解了以上實現方式之后, 我們開始來搭建環境并進行代碼開發. 以下列舉我們的技術選型: koa 基于nodejs的服務端框架 koa-static 基于koa的靜態資源中間件 koa-body 解析請求體的中間件 koa2-cors 處理跨域的中間件 koa-logger 處理請求日志的中間件 react 前端框架 react-codemirror2 代碼編輯器 antd 基于react的前端組件庫
以下是筆者實現的效果圖:
對于以上筆者列出的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,感興趣的可以學習了解一下。
服務端實現主要是寫請求接口來存儲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);
對于在線coding的應用場景,筆者大致舉幾個應用場景。比如說我們在H5-Dooring編輯器中,要實現用戶自定義組件庫或者自定義h5頁面,并實時下載預覽,我們可以直接使用它,如下:
H5-Dooring
其次,對于需要部署和實時修改的網站,如果上線之后需要快速修改部署,我們可以直接在線coding之后一鍵部署。對于個人技術博客來說也是可以實現在線編輯和在線一鍵部署,這樣我們就無需依賴特定環境和特定電腦了。對于更多強大的應用,對于企業級來說,也可以實現在線coding的方式寫服務端代碼,在線寫sql。比如云開發,云計算領域催生的在線saas協作等。
以上教程筆者的一個簡單版本,基本上可以實現在線寫前端代碼,對于一些更復雜的功能,通過合理的設計也是可以實現的,大家可以自行探索,筆者已將在線編寫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的相關介紹如下所示。
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。
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的下載和安裝中介紹。
VIM是一個很先進的文本編輯器,在Python開發者社區中很受歡迎。它是一個開源軟件,遵循GPL協議,所以你可以免費使用它。
雖然VIM是最好的文本編輯器,但是它提供的功能不僅限于此,經過正確的配置后,它可以成為一個全功能的Python開發環境。此外,VIM還是一個輕量級的、模塊化、快速響應的工具,非常適合那些很牛的程序員——編程從不用鼠標的人。
初始化配置需要花費一定的時間,這是因為需要安裝一些VIM的插件,并進行配置以使它們能正常工作,最后你會發現這一切都是值得的。如果你在尋找一個Linux系統下的Python IDE,那么VIM將是你的不二選擇。
Spyder Python是一個開源的Python集成開發環境,非常適合用來進行科學計算方面的Python開發。它是一個輕量級的軟件,是用Python開發的,遵循MIT協議.可免費使用。
Spyder Python的基本功能包括多語言編輯器、交互式控制臺、文件查看、variableexplorer、文件查找、文件管理等。Spyder IDE也可以運行于Windows、Mac或者Linux系統之上。
雖然Spyder是一個獨立的集成開發環境,能運行在Windows、Mac OS、Linux等系統之上。同時,它也可以作為PyQt的擴展庫,可以嵌入PyQt的應用中去。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。