精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
資深程序員教你如何開(kāi)發(fā)一個(gè) PyCharm 插件!這可是Python御用!
程序員的聚集地 2018-09-19 18:58:40

PyCharm 是很多 Python 開(kāi)發(fā)者優(yōu)先選擇的 IDE,功能強(qiáng)大,跨平臺(tái),提供免費(fèi)社區(qū)版,非常良心。如果你想自己給PyCharm添加一些功能怎么辦呢?有兩個(gè)辦法:

  1. 通過(guò)提需求實(shí)現(xiàn),到 JetBrains 的 github 去提issue或者自己發(fā)Pull Request請(qǐng)他們merge。
  2. 通過(guò)安裝插件實(shí)現(xiàn),你可以查找現(xiàn)有的插件倉(cāng)庫(kù),或者,自己寫(xiě)一個(gè)。


今天我們說(shuō)說(shuō)怎么搭建環(huán)境自己寫(xiě)一個(gè) PyCharm 插件。

前期準(zhǔn)備

先普及一下知識(shí),開(kāi)發(fā) PyCharm 插件和開(kāi)發(fā) IntellJ IDEA 插件需要的環(huán)境是一樣的,因?yàn)?PyCharm 本身就是 IDEA 的一個(gè)子集,說(shuō)白了就是 IDEA 上套了一個(gè) Python 語(yǔ)言支持的插件。其他系列的 IDEA IDE 其實(shí)也是一樣的道理,都是套了對(duì)應(yīng)語(yǔ)言支持的框架外加一點(diǎn)外觀修改,就成了新的產(chǎn)品,比如 WebStrom,PhpStorm,RubyMine。到這里你應(yīng)該有個(gè)印象,JetBrains 這個(gè)公司太能玩了,就一個(gè) IDEA 能整出那么多產(chǎn)品來(lái),很厲害吧?

開(kāi)發(fā) PyCharm 插件你需要:

私信小編01 02 03 04 即可獲取數(shù)十套PDF哦!記住是分開(kāi)私信!

  • 對(duì) Java 語(yǔ)言有一定了解,因?yàn)槟阒荒苡?Java 開(kāi)發(fā)插件
  • 安裝最新版的 IntelliJ IDEA
  • 安裝 PyCharm Community Edition 到本地
  • 確保 IntelliJ 安裝并啟用了 Plugin DevKit 插件,默認(rèn)自帶
  • 配置 IntelliJ Platform SDK, 下文會(huì)涉及相關(guān)步驟
  • (非必需)將IntellJ IDEA Community Edition 的代碼克隆到本地,方便調(diào)試


如果你英文還可以,也可以閱讀官方的幫助文檔。

http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started.html

新建插件工程

從文件菜單選擇 New Project, 選擇 IntelliJ Platform Plugin,如果你沒(méi)有配置SDK,點(diǎn)擊New 菜單。


選擇你本地 PyCharm Community Edition(社區(qū)版)的安裝路徑作為SDK目錄,Java SDK 選擇 1.8 以上的版本。

請(qǐng)注意,你也可以使用 PyCharm Professional (旗艦版) 的安裝路徑作為SDK目錄,不過(guò)當(dāng)你調(diào)試插件碰到核心代碼時(shí),社區(qū)版你可以一步一步跟到最里面,但旗艦版不行,因?yàn)槠炫灠娌⒉皇情_(kāi)源的,你拿不到源代碼。





回到 New Project 的界面,點(diǎn)擊 Next,輸入 Project name 和 Project location,點(diǎn)擊完成。




小貼士:如果你是打開(kāi)別人的寫(xiě)的插件,那么你直接選擇打開(kāi)工程目錄是沒(méi)有用的,因?yàn)?IntelliJ IDEA 不認(rèn)為這是個(gè)插件工程,所以你沒(méi)法運(yùn)行和調(diào)試這個(gè)插件,一個(gè)不怎么優(yōu)雅的辦法就是從現(xiàn)有代碼新建一個(gè)插件工程,StackOverflow 關(guān)于這個(gè)的吐槽問(wèn)題你搜到,如果你有更好的辦法請(qǐng)告訴我。當(dāng)你換一臺(tái)機(jī)器把插件代碼克隆下來(lái)之后應(yīng)該就知道我在說(shuō)什么了。

插件工程目錄結(jié)構(gòu)

一個(gè)典型的插件目錄結(jié)構(gòu)就像下圖。




  • .idea 目錄 – JetBrains IDE 生成的工程都會(huì)有這么一個(gè)目錄,存放用戶配置和緩存,無(wú)需關(guān)心。
  • doc 目錄 – 插件的文檔,可選。
  • out 目錄 – 編譯后的代碼字節(jié),無(wú)需關(guān)心。
  • resources 目錄 – 資源存放目錄,插件的配置文件在此。
  • src 目錄 – 代碼存放的位置。
  • *.iml 文件 – 項(xiàng)目的配置文件。


修改插件信息

打開(kāi) /resources/META-INF/plugin.xml, 更新插件信息,舉例說(shuō)明。

<idea-plugin version="2"> <id>com.eflabs.plugin.efcommon</id> <name>EF Common for PyCharm</name> <version>3.1</version> <vendor email="toby.qin@live.com">Toby Qin</vendor> <description><![CDATA[ <b>Able to run and debug ef common tests easily.</b><br> <br> <ul> <li>Support run/debug ef-common tests via context menu.</li> <li>Show run button in the line of test case.</li> </ul>]]> </description> <change-notes><![CDATA[ <b>v3.0</b><br> <p>Support PyCharm 171.*</p> <p>Support nested ef-common project.</p> <br> <b>Early version</b><br> <p>Bug fix: failed to get run.template in resource.</p> <p>The baby version.</p> <br>]]> </change-notes> <!-- please seehttp://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description --> <idea-version since-build="171.1"/> <!-- please seehttp://confluence.jetbrains.com/display/IDEADEV/Plugin+Compatibility+with+IntelliJ+Platform+Products on how to target different products --> <depends>com.intellij.modules.python</depends> <extensions defaultExtensionNs="com.intellij"> <!-- Add your extensions here --> <configurationTypeimplementation="com.eflabs.efcommon.runConfiguration.EfCommonConfigurationType" order="FIRST"/> <runConfigurationProducerimplementation="com.eflabs.efcommon.runConfiguration.EfCommonConfigurationProducer" order="FIRST"/> <runLineMarkerContributor implementationClass="com.eflabs.efcommon.runLineMarker.EfCommonRunLineMarkerContributor" language="Python"/> </extensions> <actions> <!-- Add your actions here --> </actions> </idea-plugin>


這個(gè)配置文件里有幾點(diǎn)要注意的:

  1. <id>和<version> 用于聲明你的插件唯一標(biāo)識(shí),同id和version的插件不能夠重復(fù)上傳。
  2. <depends> 節(jié)點(diǎn)聲明了此插件的依賴條件,如果是PyCharm 適用的,那么就寫(xiě) com.intellij.modules.python
  3. <extenstions 節(jié)點(diǎn)用于聲明你要擴(kuò)展的類(lèi),只要繼承和實(shí)現(xiàn)對(duì)應(yīng)的接口就可以了。
  4. <actions> 節(jié)點(diǎn)用于注冊(cè)你要實(shí)現(xiàn)的 Action,比如你先寫(xiě)一些 Action,然后注冊(cè)到某個(gè)菜單。


實(shí)現(xiàn)具體的業(yè)務(wù)代碼

這里我略過(guò)最核心的部分,因?yàn)槊總€(gè)人的需求和代碼能力都不一樣,這應(yīng)該去查閱Java編程規(guī)范。

簡(jiǎn)而言之,就是根據(jù)你自己的需求用Java實(shí)現(xiàn)一些接口和方法。

運(yùn)行和調(diào)試你的插件

如果你的代碼已經(jīng)實(shí)現(xiàn)了,那么運(yùn)行和調(diào)試就比較簡(jiǎn)單。

  • 使用 Run | Run 菜單來(lái)運(yùn)行你的插件,這時(shí)候會(huì)啟動(dòng)一個(gè)新的PyCharm,默認(rèn)安裝好你的插件。
  • 使用 Run | Debug 菜單來(lái)調(diào)試你的插件,你可以設(shè)置斷點(diǎn)進(jìn)行調(diào)試。


發(fā)布你的插件

你可以選擇本地發(fā)布你的插件,也可以選擇上傳到 JetBrains 的插件倉(cāng)庫(kù)。

本地發(fā)布安裝

如果你的插件是內(nèi)部小范圍使用,并且可能帶有敏感信息,那么這樣的方式會(huì)比較適合你。從主菜單選擇 Build > Prepare plugin ‘my_plugin’ For Deployment。


如果成功那么在工程目錄就會(huì)生成一個(gè)同名的 jar 文件。




將這個(gè)文件 copy 到目標(biāo)機(jī)器就可以通過(guò) Install Plugin from disk … 完成安裝。

發(fā)布插件到 JetBrains Plugin 倉(cāng)庫(kù)

生成插件的步驟和本地發(fā)布是一樣的,唯一不同的就是你需要到 JetBrains Plugins 網(wǎng)站去注冊(cè)一個(gè)賬號(hào)。

  • https://plugins.jetbrains.com/


登錄之后選擇 UPLOAD PLUGIN 菜單,上傳之后大概需要2個(gè)工作日審核。


審核通過(guò)后其他用戶就可以直接從 Browse Repositories… 里搜索到你的插件并安裝。通過(guò)插件倉(cāng)庫(kù)安裝的插件,一旦有新版本發(fā)布,用戶將收到更新提示。

寫(xiě)在最后

關(guān)于如何實(shí)現(xiàn)具體的插件業(yè)務(wù)代碼,一個(gè)偷懶的辦法就是去看現(xiàn)有功能大概是怎么實(shí)現(xiàn)的,你既然可以拿到 PyCharm Community Edition 的所有代碼,還有啥看不到的,看懂只是時(shí)間問(wèn)題。再或者去 github 搜搜看,萬(wàn)一有驚喜呢?

就 PyCharm 本身來(lái)說(shuō),我覺(jué)得作為 IDE 提供的功能已經(jīng)很豐富了,為啥還要寫(xiě)插件呢?對(duì)啊,哪里來(lái)的需求,會(huì)不會(huì)是一個(gè)偽需求呢。寫(xiě)插件前請(qǐng)你想一想這個(gè)問(wèn)題。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
自己編寫(xiě)Android Studio插件 別停留在用的程度了
10 種最佳 IDE 軟件 ,你更忠愛(ài)哪一個(gè)?
IntelliJ IDEA18個(gè)常用插件,動(dòng)圖演示,讓你效率翻倍!
?WebStorm 超好用的10款插件,效率提升了好多!
Java程序員必備的Intellij插件
10個(gè)不能錯(cuò)過(guò)的IntelliJ IDEA插件
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 德格县| 建阳市| 宣恩县| 湖口县| 丰县| 宿松县| 潞西市| 明溪县| 金山区| 潼南县| 蓬溪县| 康平县| 江油市| 图木舒克市| 开江县| 博湖县| 友谊县| 麻城市| 兴安县| 云南省| 天水市| 伊金霍洛旗| 康定县| 旬阳县| 广平县| 高平市| 蒙城县| 武夷山市| 兴业县| 沐川县| 广水市| 石城县| 双城市| 龙江县| 门源| 玉田县| 容城县| 廊坊市| 盐亭县| 长兴县| 永清县|