成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

做一個(gè)運(yùn)行Python文件的Atom插件

Genng / 1458人閱讀

摘要:由于這個(gè)插件有式的程序返回值和運(yùn)行時(shí)間的顯示,我希望我的插件也具有這個(gè)功能。這個(gè)命令在后臺(tái)其實(shí)會(huì)做很多事情,比如設(shè)置中的版本號(hào)添加版本標(biāo)簽并提交到版本庫(kù)中??梢钥吹降谝淮翁峤徊寮陌姹咎?hào)為。

最近在學(xué)習(xí)Python,自然也安裝了Atom編輯器的一些Python插件。有一個(gè)插件名字叫做atom-python-run,作用很簡(jiǎn)單,就是按F5運(yùn)行當(dāng)前Python文件。不過(guò)這個(gè)插件有一個(gè)問(wèn)題,就是只能在Windows平臺(tái)上以cmd方式運(yùn)行。我希望這個(gè)插件能支持Powershell方式運(yùn)行,所以我就給作者提了Issue。結(jié)果發(fā)現(xiàn)Issue還不少。而作者正好比較忙,目前沒(méi)工夫。所以我就想,為什么不自己做一個(gè)Atom插件呢?

以上就是我開(kāi)發(fā)這個(gè)插件的目的了。這個(gè)插件的主要功能就是按F5啟動(dòng)一個(gè)終端運(yùn)行Python文件,終端可以是cmd也可以是powershell。

編寫(xiě)插件

這個(gè)插件我就叫它run-python-simply,聽(tīng)名字應(yīng)該就能猜出它的作用。首先打開(kāi)Atom編輯器,然后點(diǎn)擊菜單欄Packages->Package Generator->Generate Package,輸入要?jiǎng)?chuàng)建的插件名字,然后按回車(chē)。

時(shí)間統(tǒng)計(jì)

在編寫(xiě)插件之前,我們首先分析一下插件的需求。由于atom-python-run這個(gè)插件有CodeBlocks式的程序返回值和運(yùn)行時(shí)間的顯示,我希望我的插件也具有這個(gè)功能??戳艘幌耡tom-python-run的源代碼,作者的實(shí)現(xiàn)方式是寫(xiě)一個(gè)C++程序,用這個(gè)C++程序調(diào)用Python文件,時(shí)間統(tǒng)計(jì)在C++程序中。我這里就不使用C++了,既然是Python的插件,那么我這里就使用Python來(lái)統(tǒng)計(jì)時(shí)間。

下面的腳本很簡(jiǎn)單,要執(zhí)行的文件通過(guò)命令行參數(shù)傳入。程序返回的結(jié)果附帶時(shí)間統(tǒng)計(jì)和返回值的,這個(gè)和atom-python-run插件的輸出結(jié)果相同。

# Python 3 file

import subprocess
import time
import sys

script = sys.argv[1]

start = time.time()
process = subprocess.run(["python", script], stderr=subprocess.STDOUT)
exitcode = process.returncode


end = time.time()

seconds = end - start

print()
print(
    f"Process return {exitcode} ({hex(exitcode)})   execution time: {seconds:.03f} s")
subprocess.call("pause", shell=True)
主要代碼

插件的主要代碼我使用了CoffeeScript編寫(xiě)。默認(rèn)自動(dòng)生成的代碼有兩個(gè),一個(gè)視圖,另一個(gè)是代碼。由于我們這個(gè)插件不需要顯示什么內(nèi)容,所以那個(gè)View文件直接刪了就行。剩下一個(gè)文件寫(xiě)成下面這樣。

這個(gè)文件的實(shí)現(xiàn)參考了atom-python-run。由于我也是剛剛學(xué)習(xí)編寫(xiě)插件,對(duì)于插件怎么寫(xiě)還是不太懂,所以最簡(jiǎn)單的辦法就是參考另一個(gè)插件了。當(dāng)然即使是參考,過(guò)程也是很痛苦的。因?yàn)槲耶吘箤?duì)JavaScript和CoffeeScript不太熟悉,有些簡(jiǎn)單的地方也浪費(fèi)了不少時(shí)間。而且插件的調(diào)試也不太方便,需要開(kāi)兩個(gè)Atom窗口,一個(gè)修改完之后,重載另一個(gè)。

寫(xiě)完之后再看看代碼,并不怎么難。由于代碼時(shí)間的統(tǒng)計(jì)已經(jīng)做Python文件中做好了,所以在這里只需要調(diào)用那個(gè)Python,讓Python調(diào)用實(shí)際的Python文件就行了。

這里用到的知識(shí)點(diǎn)有NodeJS的path、child_process模塊。具體用法看NodeJS文檔就好了。還有就是幾個(gè)Atom接口的使用:notifications用來(lái)創(chuàng)建通知,就是右上角的氣泡通知;atom.config用來(lái)獲取Atom的配置項(xiàng);config節(jié)點(diǎn)用來(lái)添加插件的配置。具體使用到時(shí)不難,看Atom的文檔就行了。

{CompositeDisposable} = require "atom"
child_process = require "child_process"
path = require "path"

module.exports = RunPythonSimply =
  subscriptions: null
  activate: (state) ->
    @subscriptions = new CompositeDisposable
    @subscriptions.add atom.commands.add "atom-workspace", "run-python-simply:toggle": => @toggle()

  deactivate: ->
    @subscriptions.dispose()

  serialize: ->


  toggle: ->
    editor = atom.workspace.getActiveTextEditor()
    if editor
      file = editor.buffer.file
      if file
        fileInfo = path.parse(file.path)
        if fileInfo.ext != ".py"
          atom.notifications.add("warning", "Current file is not a python source file")
        else
          editor.save()
          @run(file.path)
      else
        atom.notifications.add("info", "No source file to run")

  run: (file)->
    command = atom.config.get("run-python-simply.command")
    args = command.split(" ").concat(["python", __dirname + path.sep + "exec.py", file])
    process = child_process.spawn("start", args, {
      shell: true
      detached: true
    })
    process.unref()

  config:
    command:
      title: "Command Prompt"
      type: "string"
      default: "cmd /c"
      enum: [
        {value: "cmd /c", description: "Command Line Prompt"}
        {value: "powershell -command", description: "Powershell"}
      ]

其實(shí)Atom的插件系統(tǒng)比我想的要簡(jiǎn)單。一開(kāi)始我覺(jué)得Atom插件要做的事情其實(shí)還挺多,還要自己管理自己的配置對(duì)話(huà)框。后來(lái)我發(fā)現(xiàn)根本不需要,Atom的系統(tǒng)比較智能。就像上面代碼中的那樣,只要我們?cè)诖a中聲明了一個(gè)config元素,編輯器就會(huì)自動(dòng)生成對(duì)應(yīng)的配置界面。比方說(shuō)上面我聲明了兩個(gè)enum,編輯器那么編輯器就自動(dòng)生成了下拉列表。

本來(lái)在寫(xiě)這個(gè)插件的時(shí)候我有很多想法準(zhǔn)備總結(jié)一下,后來(lái)寫(xiě)完了回頭一看感覺(jué)也就這樣。沒(méi)什么說(shuō)的了,大家都是聰明人,看看就得了。所以就這樣吧。

發(fā)布插件 推送到Github

代碼寫(xiě)完之后,就能發(fā)布了。首先需要將它推送到Github。我們?cè)贕ithub上創(chuàng)建一個(gè)倉(cāng)庫(kù),然后把代碼推進(jìn)去就好了。如果對(duì)Git命令不熟悉的話(huà),可以使用Git Extensions,這是Windows下最好用的圖形客戶(hù)端了。

發(fā)布插件

第一步是輸入apm login。這樣會(huì)在瀏覽器中打開(kāi)一個(gè)網(wǎng)頁(yè),在網(wǎng)頁(yè)上登錄Atom賬號(hào)之后,復(fù)制網(wǎng)頁(yè)上的Token,然后粘貼回命令行中,再按回車(chē)。這樣就完成了登錄工作。

登錄之后,命令行切到我們插件的Git目錄中,然后輸入apm publish minor,稍等片刻插件就發(fā)布成功了。這個(gè)命令可以接受minormajor、patch三個(gè)參數(shù),當(dāng)我們需要更新大版本、小版本、修訂版本的時(shí)候使用。

這個(gè)命令在后臺(tái)其實(shí)會(huì)做很多事情,比如設(shè)置package.json中的版本號(hào)、添加版本標(biāo)簽并提交到版本庫(kù)中。完成之后,會(huì)顯示下面這樣的祝賀信息。這樣,插件就發(fā)布完成了??梢钥吹降谝淮翁峤徊寮陌姹咎?hào)為v0.0.1。如果我們查看一下Github倉(cāng)庫(kù),也會(huì)發(fā)現(xiàn)多了一個(gè)名為Prepare v0.0.1的提交。

這時(shí)候搜索一下Atom插件倉(cāng)庫(kù),會(huì)發(fā)現(xiàn)我們的插件已經(jīng)成功出現(xiàn)在了插件倉(cāng)庫(kù)中。這樣這個(gè)插件就算開(kāi)發(fā)完成了!插件地址是run-python-simply,源代碼地址是Github。這個(gè)插件作用很簡(jiǎn)單,就是在cmd或者powershell中運(yùn)行當(dāng)前的Python文件,有興趣的同學(xué)可以下載試試。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38587.html

相關(guān)文章

  • Top 10 JavaScript編輯器,你在用哪個(gè)?

    摘要:在這個(gè)編輯器中,和是其中排名靠前的兩個(gè)。是一個(gè)免費(fèi)的輕量級(jí)編輯器和,用于和開(kāi)發(fā)。對(duì)于免費(fèi)的代碼編輯器來(lái)說(shuō),是一個(gè)很好的選擇??梢园惭b兩個(gè)命令行實(shí)用程序,用于從啟動(dòng)編輯器,用于管理的軟件包。 對(duì)于JavaScript程序員來(lái)說(shuō),目前有很多很棒的工具可供選擇。本文將會(huì)討論10個(gè)優(yōu)秀的支持javascript,HTML5和CSS開(kāi)發(fā),并且可以使用Markdown進(jìn)行文檔編寫(xiě)的文本編輯器。為什...

    zombieda 評(píng)論0 收藏0
  • 開(kāi)始開(kāi)發(fā)atom插件(并無(wú)系列)

    摘要:注意本文目的不在開(kāi)發(fā)一個(gè)什么什么插件,只告訴你如何進(jìn)行開(kāi)發(fā)注下文并無(wú)太多代碼,代碼建議到你新建一個(gè)模版插件然后你就擁有了所有的代碼,然后根據(jù)下文加深自己的理解,相信你會(huì)看懂它。開(kāi)始開(kāi)發(fā)入口文件有個(gè)方法釋放資源的方法不要做其他事情。 atom高級(jí)用法???除了自定義功能基本沒(méi)啥好玩,抱著裝逼的想法,搜了一波atom插件入門(mén),發(fā)現(xiàn)說(shuō)得太迷糊(可能是我太菜),然后打開(kāi)了官網(wǎng)的插件文檔,細(xì)細(xì)的...

    solocoder 評(píng)論0 收藏0
  • JS/React 開(kāi)發(fā)者 Atom 終極配置

    摘要:開(kāi)發(fā)者的終極配置原文作者原文鏈接根據(jù)多年以來(lái)不斷完善配置的經(jīng)驗(yàn),決定這次給也來(lái)一個(gè)大改造??旖萱I幫助開(kāi)發(fā)人員在不同的編輯器之間保持一致的編碼風(fēng)格。一組專(zhuān)注,用于優(yōu)化現(xiàn)代開(kāi)發(fā)生產(chǎn)力的命令集,目標(biāo)是符合推薦的代碼規(guī)范。 JS/React 開(kāi)發(fā)者的 Atom 終極配置 原文作者:Elad Ossadon 原文鏈接:The Ultimate Atom Editor Setup (+for J...

    LiangJ 評(píng)論0 收藏0
  • JavaScript開(kāi)發(fā)工具大全

    摘要:發(fā)布于之后,采用了完全不同的方式,使用函數(shù)定義任務(wù)。它允許開(kāi)發(fā)者使用它們的補(bǔ)丁和更新來(lái)修復(fù)這些安全漏洞。提供了工具用于掃描依賴(lài)來(lái)監(jiān)測(cè)漏洞。是一個(gè)開(kāi)源診斷工具,用于和應(yīng)用。是和開(kāi)發(fā)的一款新的包管理工具。與相比,它解決了安全性能以及一致性問(wèn)題。 譯者按: 最全的JavaScript開(kāi)發(fā)工具列表,總有一款適合你! 原文: THE ULTIMATE LIST OF JAVASCRIPT TOO...

    nifhlheimr 評(píng)論0 收藏0
  • 13個(gè)VSCode使用技巧,開(kāi)啟高效開(kāi)發(fā)模式

    摘要:本文分享自華為云社區(qū)使用技巧使用技巧,作者小聰不是小蔥。是一款開(kāi)源的編輯器,擁有強(qiáng)大的功能,。由于擁有各種各樣的插件,這就使得可以做到的事情更多了。在使用的過(guò)程中,也是有很多技巧的,掌握一些技巧對(duì)于后期寫(xiě)代碼也會(huì)輕松很多。 摘要:VsCode是一款開(kāi)源的編輯器,擁有強(qiáng)大的功能,。由于擁有各...

    PumpkinDylan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<