PyCharm 是很多 Python 開(kāi)發(fā)者優(yōu)先選擇的 IDE,功能強(qiáng)大,跨平臺(tái),提供免費(fèi)社區(qū)版,非常良心。如果你想自己給PyCharm添加一些功能怎么辦呢?有兩個(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)私信!
如果你英文還可以,也可以閱讀官方的幫助文檔。
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)就像下圖。
修改插件信息
打開(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)要注意的:
實(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)單。
發(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)。
登錄之后選擇 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)題。
聯(lián)系客服