Ag Déanamh Cairdeas Python agus Bash: leabharlanna cliste-env agus python-bhlaosc

Lá maith ag gach duine.

Sa lá atá inniu ann, tá Python ar cheann de na teangacha is mó a úsáidtear i réimse a chruthú, ní hamháin táirgí bogearraí iad féin, ach freisin a mbonneagar a sholáthar. Mar thoradh air sin, bhí ar go leor devops, cibé acu dá thoil nó ina choinne, teanga nua a fhoghlaim le húsáid níos déanaí mar fhorlíonadh ar na scripteanna maithe Bash. Mar sin féin, admhaíonn Bash agus Python cuir chuige éagsúla i leith cód a scríobh agus tá gnéithe áirithe acu, rud a chiallaíonn gur tasc capacious agus fánach uaireanta é scripteanna Bash a aistriú chuig an “teanga nathair”.

Chun an saol a dhéanamh níos éasca do devops, cruthaíodh go leor leabharlanna agus fóntais úsáideacha i Python agus tá siad fós á gcruthú. Déanann an t-alt seo cur síos ar dhá leabharlann nua cruthaithe ag údar an phoist seo - cliste-env и python-bhlaosc - agus deartha chun devops a mhaolú ón ngá atá le go leor aird a thabhairt ar na castaí a bhaineann le bheith ag obair le Python, ag fágáil seomra le haghaidh tascanna níos suimiúla. Is é raon feidhme ghníomhaíocht na leabharlann ná athróga comhshaoil ​​agus fóntais sheachtracha a sheoladh.

Aon duine a bhfuil suim acu, féach le do thoil cat.

"rothair" nua?

Bheadh ​​sé cosúil, cén fáth a chruthú pacáistí nua le haghaidh oibríochtaí cothrom gnáth? Cad a chuireann cosc ​​ort os.environ agus fophróiseas a úsáid. <modh nó aicme de do rogha> go díreach?

Cuirfidh mé fianaise ar fáil i bhfabhar gach ceann de na leabharlanna ar leithligh.

leabharlann cliste-env

Sula scríobhann tú do thuairim féin, tá sé úsáideach dul ar líne agus réitigh réamhdhéanta a lorg. Ar ndóigh, tá an baol ann nach bhfaighidh tú an méid atá uait, ach is “imeacht árachais” é seo. De ghnáth, oibríonn an cur chuige seo agus sábhálann sé go leor ama agus iarracht.

De réir na dtorthaí cuardach nochtadh an méid seo a leanas:

  • tá pacáistí ann a chuireann glaonna ar os.environ i ndáiríre, ach ag an am céanna a éilíonn go leor gníomhartha distracting (mar shampla rang a chruthú, paraiméadair speisialta i nglaonna, etc.);
  • Tá pacáistí maith ann, atá, áfach, ceangailte go docht le héiceachóras ar leith (creatacha gréasáin go príomha cosúil le Django) agus dá bhrí sin níl siad uilíoch ar chor ar bith gan comhad;
  • is annamh a dhéantar iarrachtaí rud éigin nua a dhéanamh. Mar shampla, cuir clóscríobh agus luachanna athraitheacha a pharsáil go sainráite trí mhodhanna a ghlaoch mar
    get_<typename>(var_name)

    Nó anseo réiteach amháin eile, nach dtacaíonn, áfach, leis an Python 2 anois náire (a, ainneoin RIP oifigiúil, tá sléibhte ann fós de chód scríofa agus éiceachórais iomlána);

  • Tá ceardaíocht mac léinn scoile ann a chríochnaigh sa PyPI réamhtheachtacha ar chúis éigin anaithnid agus nach gcruthaíonn siad ach fadhbanna le hainmniú pacáistí nua (go háirithe, is beart riachtanach é an t-ainm "smart-env").

Agus is féidir leis an liosta seo dul ar aghaidh ar feadh i bhfad. Mar sin féin, ba leor na pointí thuas chun mé a chur ar bís faoin smaoineamh rud éigin áisiúil agus uilíoch a dhéanamh.

Riachtanais a socraíodh sular scríobhadh smart-env:

  • An scéim úsáide is simplí
  • Tacaíocht chlóscríobh sonraí go héasca configurable
  • Python 2.7 comhoiriúnach
  • Clúdach cód maith ag tástálacha

I ndeireadh na dála, tuigeadh é seo go léir. Seo sampla úsáide:

from smart_env import ENV

print(ENV.HOME)  # Equals print(os.environ['HOME'])

# assuming you set env variable MYVAR to "True"

ENV.enable_automatic_type_cast()

my_var = ENV.MY_VAR  # Equals boolean True

ENV.NEW_VAR = 100  # Sets a new environment variable

Mar a fheiceann tú ón sampla, chun oibriú le rang nua, ní gá duit ach é a allmhairiú (ní gá duit sampla a chruthú - lúide an gníomh breise). Baintear rochtain ar aon athróg timpeallachta amach trí thagairt a dhéanamh dó mar athróg den aicme ENV, rud a fhágann, i ndáiríre, an aicme seo mar fhillteán iomasach do thimpeallacht an chórais dhúchais, agus ag an am céanna é a thiontú ina réad cumraíochta féideartha le haghaidh beagnach aon chóras ( baintear amach cur chuige comhchosúil, mar shampla, i Django , ach is é an réad cumraíochta an modúl/pacáiste socruithe féin).

Baintear úsáid as dhá mhodh chun an modh tacaíochta clóscríofa uathoibríoch a chumasú/a dhíchumasú - enable_automatic_type_cast() agus disable_automatic_type_cast(). Féadfaidh sé seo a bheith áisiúil má tá réad sraitheach cosúil le JSON nó fiú tairiseach Boole san athróg timpeallachta (tá an athróg DEBUG in Django ag socrú go soiléir trí athróg timpeallachta a chur i gcomparáid le teaghráin “bhailí” ar cheann de na cásanna is coitianta). Ach anois níl aon ghá le teaghráin a thiontú go sainráite - tá an chuid is mó de na gníomhartha riachtanacha leabaithe cheana féin i doimhneacht na leabharlainne agus níl siad ach ag fanacht le comhartha chun gníomhú. 🙂 Go ginearálta, oibríonn clóscríobh go trédhearcach agus tacaíonn sé le beagnach gach cineál sonraí ionsuite atá ar fáil (ní tástáladh reoite, casta agus beart).

Cuireadh an ceanglas chun tacú le Python 2 i bhfeidhm le beagnach aon íobairtí (tréigean na clóscríobh agus cuid de na “candies siúcra" de na leaganacha is déanaí de Python 3), go háirithe, a bhuíochas leis na sé cinn uileláithreach (chun na fadhbanna a bhaineann le húsáid meta-ranganna a réiteach). ).

Ach tá roinnt srianta ann:

  • Ciallaíonn tacaíocht Python 3 leagan 3.5 agus níos airde (tá a láithreacht i do thionscadal mar thoradh ar leisce nó easpa gá le feabhsúcháin, ós rud é go bhfuil sé deacair teacht suas le cúis oibiachtúil cén fáth go bhfuil tú fós ar 3.4);
  • I Python 2.7, ní thacaíonn an leabharlann le díshraithiú liteartha tacair. Cur síos anseo. Ach má tá aon duine ag iarraidh é a chur i bhfeidhm, tá fáilte romhat :);

Tá meicníocht eisceachta ag an leabharlann freisin i gcás earráidí parsála. Mura bhféadfadh aon cheann de na hanailíseoirí atá ar fáil an teaghrán a aithint, fanann an luach mar theaghrán (ina ionad sin, ar chúiseanna áise agus comhoiriúnacht siar leis an ngnáth-loighic maidir le conas a oibríonn athróga in Bash).

leabharlann python-bhlaosc

Anois inseoidh mé duit faoin dara leabharlann (fágfaidh mé ar lár an cur síos ar easnaimh na n-analóg atá ann cheana féin - tá sé cosúil leis an gceann a thuairiscítear le haghaidh analógacha cliste-env. - anseo и anseo).

Go ginearálta, tá an smaoineamh maidir le cur i bhfeidhm agus na ceanglais maidir leis cosúil leis na cinn a thuairiscítear don timpeallacht chliste, mar is léir ón sampla:

from python_shell import Shell

Shell.ls('-l', '$HOME')  # Equals "ls -l $HOME"

command = Shell.whoami()  # Equals "whoami"
print(command.output)  # prints your current user name

print(command.command)  # prints "whoami"
print(command.return_code)  # prints "0"
print(command.arguments)  # prints ""

Shell.mkdir('-p', '/tmp/new_folder')  # makes a new folder

Seo é an smaoineamh:

  1. rang singil a dhéanann ionadaíocht ar Bash i ndomhan Python;
  2. Tugtar feidhm den rang Shell ar gach ordú Bash;
  3. Ansin cuirtear na paraiméadair do gach glao feidhme isteach sa ghlao ordú Bash comhfhreagrach;
  4. Déantar gach ordú a fhorghníomhú “anseo agus anois” faoi láthair a dtugtar é, i.e. oibríonn an cur chuige sioncrónach;
  5. is féidir rochtain a fháil ar aschur ordaithe i stdout, chomh maith lena chód tuairisceáin;
  6. Mura bhfuil an t-ordú sa chóras, caitear eisceacht.

Mar is amhlaidh le smart-env, tá tacaíocht ann do Python 2 (cé go raibh gá le beagán níos mó fola íobartach) agus gan aon tacaíocht do Python 3.0-3.4.

Pleananna forbartha leabharlainne

Is féidir leat na leabharlanna a úsáid anois: tá an dá phost ar an PyPI oifigiúil. Tá foinsí ar fáil ar Github (féach thíos).

Déanfar an dá leabharlann a fhorbairt ag cur san áireamh aiseolas a bhailítear uathu siúd ar spéis leo é. Agus, más rud é go bhféadfadh sé a bheith deacair teacht suas le héagsúlacht gnéithe nua i smart-env, ansin i python-shell is cinnte go bhfuil rud éigin eile le cur leis:

  • tacaíocht do ghlaonna gan blocáil;
  • féidearthacht cumarsáide idirghníomhach leis an bhfoireann (ag obair le stdin);
  • airíonna nua a chur leis (mar shampla, maoin chun aschur a fháil ó stderr);
  • cur i bhfeidhm eolaire na n-orduithe atá ar fáil (le húsáid leis an fheidhm dir());
  • etc

tagairtí

  1. leabharlann cliste-env: Github и PyPI
  2. leabharlann python-shell: Github и PyPI
  3. Cainéal teileagram nuashonruithe leabharlainne

UPD 23.02.2020/XNUMX/XNUMX:
* Aistríodh stórtha, nuashonraíodh naisc chomhfhreagracha
* Leagan python-shell==1.0.1 á ullmhú le scaoileadh ar 29.02.2020/XNUMX/XNUMX. I measc na n-athruithe tá tacaíocht le haghaidh uathchríochnú ordaithe agus an t-ordú dir(Shell), orduithe a rith le haitheantóir Python neamhbhailí, agus réitigh fabhtanna.

Foinse: will.com

Add a comment