Kugadzira Python uye Bash Hushamwari: smart-env uye python-shell raibhurari

Zuva rakanaka mose.

Nhasi, Python ndeimwe yemitauro inoshandiswa zvakanyanya mumunda wekugadzira kwete chete zvigadzirwa zvesoftware pachazvo, asiwo nekupa zvivakwa zvavo. Nekuda kweizvozvo, ma devops mazhinji, kungave nekuda kwavo kana kupokana nazvo, aifanira kudzidza mutauro mutsva wekushandisa gare gare sewedzero kumanyoro ekare eBash akanaka. Nekudaro, Bash nePython vanotaura nzira dzakasiyana dzekunyora kodhi uye vane zvimwe zvinhu, zvichireva kuti kuendesa zvinyorwa zveBash ku "mutauro wenyoka" dzimwe nguva zvinoshanduka kuve zvine hunyanzvi uye kure nebasa diki.

Kuita kuti hupenyu huve nyore kune devops, akawanda anobatsira maraibhurari uye zvinoshandiswa muPython akagadzirwa uye anoenderera mberi kugadzirwa. Ichi chinyorwa chinotsanangura maraibhurari maviri matsva akagadzirwa nemunyori weichi post - smart-env ΠΈ python-goko - uye yakagadzirirwa kusunungura devops kubva pakudiwa kwekubhadhara zvakanyanya kune kuomarara kwekushanda nePython, ichisiya nzvimbo yemamwe mabasa anonakidza. Chiyero chebasa remaraibhurari kuchinjika kwezvakatipoteredza uye kutangisa zvekunze zvekushandisa.

Ani nani anofarira, ndapota ona katsi.

"mabhasikoro" matsva?

Zvingaite senge, sei uchigadzira mapakeji matsva emabasa akajairwa? Chii chinokutadzisa kushandisa os.environ uye subprocess.<method or class of your choice> zvakananga?

Ini ndichapa humbowo mukufarira imwe neimwe yeraibhurari zvakasiyana.

smart-env raibhurari

Usati wanyora yako wega brainchild, zvinobatsira kuenda online uye kutsvaga mhinduro dzakagadzirirwa. Ehe, pane njodzi yekusawana zvaunoda, asi ichi chiri "chiitiko cheinishuwarenzi". Sezvo mutemo, nzira iyi inoshanda uye inochengetedza nguva yakawanda nesimba.

Maererano nemigumisiro tsvaga zvinotevera zvakaziviswa:

  • kune mapakeji anonyatso kuputira mafoni ku os.environ, asi panguva imwechete inoda boka rezviito zvinokanganisa (kugadzira muenzaniso wekirasi, mapeji anokosha mukufona, nezvimwewo);
  • Kune mapakeji akanaka, ayo, zvisinei, akanyatso kusungirirwa kune chaiyo ecosystem (kunyanya web frameworks seDjango) uye naizvozvo haisi zvachose pasi rose pasina faira;
  • pane kashoma kuedza kuita chimwe chinhu chitsva. Semuyenzaniso, wedzera kutaipa uye tsanangura zvakajeka kukosha kwakasiyana nekufona nzira senge
    get_<typename>(var_name)

    Kana pano imwezve mhinduro, iyo, zvisinei, haitsigire iyo zvino inonyadzisa Python 2 (iyo, zvisinei official RIP, kuchine makomo ekodhi yakanyorwa uye ecosystem yese);

  • kune hunyanzvi hwevadzidzi vechikoro, pasina chikonzero chakajeka nei vakapedzisira vakwira kumusoro kwePyPI uye vanongogadzira matambudziko nemazita emapakeji matsva (kunyanya, zita rekuti "smart-env" chiyero chakakosha).

Uye iyi rondedzero inogona kuenderera kwenguva yakareba. Nekudaro, mapoinzi ari pamusoro aive akakwana kuti ndifare nezve zano rekugadzira chimwe chinhu chiri nyore uye chepasirese.

Zvinodiwa zvakaiswa usati wanyora smart-env:

  • Iyo yakanyanya nyore kushandisa chirongwa
  • Zviri nyore configurable data kutaipa rutsigiro
  • Python 2.7 inoenderana
  • Kuvharwa kwekodhi kwakanaka nemiedzo

Pakupedzisira, zvose izvi zvakaitwa. Heino muenzaniso wekushandisa:

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

Sezvauri kuona kubva pamuenzaniso, kushanda nekirasi nyowani, iwe unongoda kuipinza kunze (haufanire kugadzira muenzaniso - bvisa chimwe chiitiko). Kuwanikwa kune chero shanduko yemamiriro ekunze kunowanikwa nekureva kwairi sechinhu chinoshanduka chekirasi yeENV, iyo, muchokwadi, inoita kuti kirasi iyi ive intuitive wrapper yemamiriro ekunze system, panguva imwe chete ichishandura kuita chinhu chinogoneka chekugadzirisa chero chero system ( nzira yakafanana, semuenzaniso, inowanikwa muDjango, chete ipapo chinhu chekugadzirisa ndicho chigadziriso module/package pachayo).

Kugonesa/kumisa otomatiki typing support mode inowanikwa uchishandisa nzira mbiri - enable_automatic_type_cast() and disable_automatic_type_cast(). Izvi zvinogona kuve nyore kana nharaunda inoshanduka iine serialized JSON-sechinhu kana kungoita Boolean inogara (kunyatso kuseta DEBUG kusiyanisa muDjango nekuenzanisa nharaunda inoshanduka ne "zvakakodzera" tambo ndeimwe yeanowanzo zivikanwa nyaya). Asi ikozvino hapana chikonzero chekushandura zvakajeka tambo - zvizhinji zvezviito zvakakosha zvakatoiswa mukati mehupamhi hweraibhurari uye zvinongomirira chiratidzo chekuita. πŸ™‚ Kazhinji, kutaipa kunoshanda zviri pachena uye kunotsigira angangoita ese anowanikwa akavakirwa-mukati mhando dzedata (frozenset, yakaoma uye mabhayiti haana kuedzwa).

Chinodiwa chekutsigira Python 2 chakaitwa pasina kuzvipira (kusiya kutaipa uye mamwe e "shuga zvihwitsi" zveazvino mavhezheni ePython 3), kunyanya, nekuda kweiyo ubiquitous matanhatu (kugadzirisa matambudziko ekushandisa metaclasses. )

Asi pane zvimwe zvinorambidzwa:

  • Python 3 tsigiro inoreva vhezheni 3.5 uye yepamusoro (kuvapo kwavo mupurojekiti yako mhedzisiro yehusimbe kana kusada kuvandudzwa, sezvo zvakaoma kuuya nechikonzero chikonzero nei uchiri pa3.4);
  • MuPython 2.7, raibhurari haitsigire deerialization yemaseti chaiwo. Tsanangudzo pano. Asi kana paine anoda kuishandisa, unogamuchirwa :);

Raibhurari inewo imwe nzira yekusarudzika kana paine zvikanganiso zvekuparura. Kana tambo yacho isingakwanise kuzivikanwa nechero ani anowanikwa analyzer, kukosha kwacho kunoramba kuri tambo (asi, nekuda kwezvikonzero zvekureruka uye kumashure kuenderana neyakajairwa logic yemabatiro anoshanda muBash).

python-shell raibhurari

Zvino ini ndichakuudza nezve yechipiri raibhurari (ini ndichasiya tsananguro yekukanganisa kweiyo analogues iripo - yakafanana neinotsanangurwa ye smart-env. Analogues - pano ΠΈ pano).

Kazhinji, pfungwa yekushandiswa uye zvinodiwa pairi zvakafanana nezvinotsanangurwa smart-env, sezvinogona kuonekwa kubva mumuenzaniso:

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

Pfungwa ndeiyi:

  1. Kirasi imwe chete inomiririra Bash munyika yePython;
  2. Imwe neimwe yeBash command inodanwa sebasa rekirasi yeShell;
  3. Iwo maparamita ega ega ekuita kufona anozopfuudzwa mune inoenderana Bash command call;
  4. Murairo wega wega unoitwa "pano uye ikozvino" panguva yainodanwa, i.e. iyo synchronous approach inoshanda;
  5. zvinokwanisika kuwana kuburitsa kwekuraira mu stdout, pamwe nekodhi yayo yekudzoka;
  6. Kana murairo usiri muhurongwa, kunze kunokandwa.

Sezvakaita ne smart-env, pane tsigiro yePython 2 (kunyangwe ropa shoma rekupira raidiwa) uye hapana rutsigiro rwePython 3.0-3.4.

Zvirongwa zvekuvandudza raibhurari

Unogona kushandisa maraibhurari izvozvi: ese ari maviri akaiswa pane yepamutemo PyPI. Zvinyorwa zviripo paGithub (ona pazasi).

Maraibhurari ese ari maviri achagadzirwa tichifunga nezvemhinduro dzakaunganidzwa kubva kune vanofarira. Uye, kana zvingave zvakaoma kuunza zvakasiyana-siyana zvezvinhu zvitsva mu smart-env, saka mupython-shell pane chimwe chinhu chekuwedzera:

  • rutsigiro rwekusavharira mafoni;
  • mukana wekudyidzana kutaurirana nechikwata (kushanda nestdin);
  • kuwedzera zvivakwa zvitsva (semuenzaniso, pfuma yekugamuchira zvakabuda kubva stderr);
  • kushandiswa kwedhairekitori remirairo iripo (yekushandisa neiyo dir () basa);
  • uye zvakadaro.

nezvakanyorwa

  1. smart-env raibhurari: Github ΠΈ P&PI
  2. python-shell raibhurari: Github ΠΈ P&PI
  3. Telegraph channel zvinyorwa zveraibhurari

UPD 23.02.2020/XNUMX/XNUMX:
* Marepositori akafambiswa, zvinongedzo zvinongedzo zvakagadziridzwa
* Shanduro python-shell == 1.0.1 iri kugadzirira kuburitswa musi wa 29.02.2020/XNUMX/XNUMX. Shanduko dzinosanganisira tsigiro yekuraira otomatiki uye iyo dir(Shell) kuraira, kumhanya mirairo ine isiriyo Python identifier, uye bug kugadzirisa.

Source: www.habr.com

Voeg