Faia o le Python ma Bash Friendship: smart-env ma python-shell faletusi

Manuia tagata uma.

I aso nei, o le Python o se tasi lea o gagana e sili ona faʻaaogaina i le tulaga o le fatuina e le gata o oloa faʻapipiʻi latou lava, ae faʻapea foʻi ona tuʻuina atu a latou atinaʻe. O se taunuuga, o le tele o devops, pe o latou loto pe tetee, na tatau ona aʻoaʻoina se gagana fou mo le faʻaaogaina mulimuli ane e fai ma faʻaopoopoga i tusitusiga tuai Bash. Ae ui i lea, o Bash ma Python o loʻo faʻaalia auala eseese i le tusiaina o tulafono ma e iai ni uiga patino, o lona uiga o le faʻapipiʻiina o tusitusiga Bash i le "gagana gata" o nisi taimi e foliga mai o se galuega gafatia ma e mamao ese mai se galuega faatauvaa.

Ina ia faafaigofie le olaga mo devops, tele faletusi aoga ma aoga i le Python ua fausia ma faaauau pea ona faia. O lenei tusiga o loʻo faʻamatalaina ai faletusi fou e lua na faia e le tusitala o lenei pou - atamai-env и atigi python - ma faʻatulagaina e faʻamalolo ai tagata mai le manaʻoga e faʻalogo tele i le lavelave o le galue ma le Python, tuʻu avanoa mo galuega sili atu ona manaia. O le lautele o galuega a faletusi o suiga o le siosiomaga ma le faʻalauiloaina o mea aoga mai fafo.

So'o se tasi e fiafia, fa'amolemole va'ai pusi.

"Uila uila" fou?

E foliga mai, aisea e faia ai ni afifi fou mo galuega masani masani? O le a le mea e taofia ai oe mai le fa'aogaina sa'o ole os.environ ma subprocess.<metotia po'o le vasega e te filifilia?

O le a ou tu'uina atu fa'amaoniga e lagolago ai faletusi ta'itasi.

faletusi atamai-env

Aʻo leʻi tusia lau lava manatu, e aoga le alu i luga ole laiga ma suʻe ni fofo ua saunia. Ioe, e iai le lamatiaga o le le mauaina o mea e te manaʻomia, ae o se "mea faʻainisiua". I le avea ai o se tulafono, o lenei auala e aoga ma sefe le tele o taimi ma taumafaiga.

E tusa ai ma taunuuga sailiga o mea nei na fa'aalia:

  • o loʻo i ai afifi e afifi moni lava valaʻau i le os.environ, ae i le taimi lava e tasi e manaʻomia ai le tele o gaioiga faʻalavelave (faia se faʻataʻitaʻiga o se vasega, faʻapitoa faʻapitoa i telefoni, ma isi);
  • O loʻo i ai ni afifi lelei, lea, e ui i lea, e matua noatia lava i se faʻalapotopotoga faʻapitoa (e masani lava i luga o le upega tafaʻilagi e pei o Django) ma o le mea lea e le o se mea lautele e aunoa ma se faila;
  • e seasea lava taumafai e fai se mea fou. Faataitaiga, faaopoopo le taina ma faʻamalamalama manino le fesuiaiga o tau e ala i le valaʻau o metotia pei
    get_<typename>(var_name)

    Pe iinei toe tasi le fofo, lea, e ui i lea, e le lagolagoina le Python 2 ua faʻaleagaina nei (lea, e ui lava RIP aloaia, o loʻo i ai pea mauga o tulafono tusitusia ma faʻalapotopotoga uma);

  • o loʻo i ai tufuga a tamaiti aʻoga, mo se mafuaʻaga e le iloa, na iʻu i luga o le PyPI ma naʻo faʻafitauli i le faaigoaina o afifi fou (aemaise lava, o le igoa "smart-env" o se fua talafeagai).

Ma o lenei lisi e mafai ona alu mo se taimi umi. Ae ui i lea, o manatu o loʻo i luga na lava lea e faʻaosofia ai aʻu i le manatu o le faia o se mea faigofie ma lautele.

Manaoga na faʻatulagaina aʻo leʻi tusia le smart-env:

  • Le faiga fa'aoga sili ona faigofie
  • Fa'afaigofie ona fetuutuuna'i le taina o fa'amaumauga lagolago
  • Python 2.7 fetaui
  • Lelei le fa'aogaina o le code e ala i su'ega

Mulimuli ane, na iloa uma nei mea. O se faʻataʻitaʻiga lea o le faʻaaogaina:

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

E pei ona mafai ona e vaʻai mai le faʻataʻitaʻiga, e galue ma se vasega fou, e tatau ona e faʻaulufale mai (e te le manaʻomia le faia o se faʻataʻitaʻiga - faʻaitiitia le gaioiga faaopoopo). Avanoa i soʻo se fesuiaiga o le siʻosiʻomaga e maua e ala i le taʻua o se fesuiaiga o le vasega ENV, lea, o le mea moni, ua avea ai lenei vasega o se afifi faʻapitoa mo le siosiomaga faʻale-aganuʻu, aʻo faʻaaogaina i le taimi lava e tasi e mafai ona faʻatulagaina mea mo toetoe o soʻo se faiga ( o se auala talitutusa, mo se faʻataʻitaʻiga, e maua i Django, naʻo iina o le mea faʻatulagaina o le seti module / package lava ia).

O le fa'aagaoioiga/fa'aleaogaina o le fa'aoga otometi o le ta'itusi e maua i le fa'aaogaina o auala e lua - enable_automatic_type_cast() ma disable_automatic_type_cast(). E mafai ona faigofie lenei mea pe a fai o le fesuiaiga o le siosiomaga o loʻo i ai se mea faʻapitoa e pei o le JSON poʻo na o se Boolean tumau (faʻapipiʻi manino le DEBUG fesuiaiga i Django e ala i le faʻatusatusaina o le fesuiaiga o le siʻosiʻomaga ma manoa "aoga" o se tasi o mataupu sili ona taatele). Ae o le taimi nei e le manaʻomia le faʻaliliu manino o manoa - o le tele o gaioiga talafeagai ua uma ona faʻapipiʻiina i le loloto o le faletusi ma o loʻo faʻatali mo se faʻailoga e gaoioi. 🙂 I se tulaga lautele, o le taina e galue manino ma lagolagoina toetoe o ituaiga uma o loʻo maua i totonu o faʻamaumauga (frozenset, lavelave ma bytes e leʻi tofotofoina).

O le manaʻoga e lagolagoina le Python 2 na faʻatinoina e toetoe lava leai ni taulaga (le lafoaia o le taina ma nisi o "suka suka" o lomiga lata mai o le Python 3), aemaise faʻafetai i le ubiquitous ono (e foia ai faʻafitauli o le faʻaaogaina o metaclasses) .

Ae o loʻo iai nisi faʻatapulaʻaina:

  • Python 3 lagolago o lona uiga o le 3.5 ma le maualuga (o latou i ai i lau poloketi o le taunuuga lea o le paie poʻo le leai o se manaʻoga mo faʻaleleia, talu ai e faigata ona maua se mafuaʻaga faʻamoemoe e te i ai pea i le 3.4);
  • I le Python 2.7, e le lagolagoina e le faletusi le deserialization o seti literals. Fa'amatalaga iinei. Ae a mana'o se tasi e fa'atino, e talia lava :);

O lo'o iai fo'i se faiga fa'apitoa a le faletusi pe a iai ni fa'amatalaga sese. Afai e le mafai ona iloa le manoa e soʻo se tagata suʻesuʻe avanoa, o le tau o loʻo tumau pea i se manoa (nai lo, mo mafuaʻaga o le faigofie ma le fetaui i tua ma le masani masani o le auala e galue ai fesuiaiga i Bash).

python-shell faletusi

O lenei o le a ou taʻu atu ia te oe e uiga i le faletusi lona lua (O le a ou aveesea le faʻamatalaga o le faaletonu o analogues o loʻo i ai nei - e tutusa ma le faʻamatalaina mo smart-env. Analogs - iinei и iinei).

I se tulaga lautele, o le manatu o le faʻatinoga ma mea e manaʻomia e tutusa ma faʻamatalaga mo le atamai-env, e mafai ona vaʻaia mai le faʻataʻitaʻiga:

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

O le manatu lenei:

  1. Se vasega e tasi e fai ma sui o Bash i le lalolagi Python;
  2. O taʻiala taʻitasi Bash e taʻua o se galuega a le vasega Shell;
  3. O tapula'a mo vala'au ta'itasi o lo'o tu'uina atu i totonu o le valaau fa'atonu a Bash;
  4. O poloaiga taʻitasi e faʻatinoina "iinei ma le taimi nei" i le taimi e taʻua ai, i.e. e aoga le faiga fa'atasi;
  5. e mafai ona maua le gaioiga o se faʻatonuga i stdout, faʻapea foʻi ma lona toe foʻi mai;
  6. Afai e le o iai le poloaiga i totonu o le faiga, e lafo se tuusaunoaga.

E pei o le atamai-env, o loʻo i ai le lagolago mo le Python 2 (e ui lava e manaʻomia sina toto faʻataulaga) ma leai se lagolago mo Python 3.0-3.4.

Fuafuaga tau atinae o faletusi

E mafai ona e faʻaogaina faletusi i le taimi nei: o loʻo faʻapipiʻi uma i luga ole PyPI aloaia. O loʻo maua punaoa ile Github (silasila i lalo).

O faletusi uma e lua o le a atiaʻe e faʻatatau i manatu faaalia e aoina mai i latou e fiafia i ai. Ma, afai e ono faigata ona maua ni foliga fou i le smart-env, ona i ai lea i le python-shell e mautinoa lava o loʻo i ai se isi mea e faʻaopoopo:

  • lagolago mo telefoni e le poloka;
  • avanoa o fesoʻotaʻiga fesoʻotaʻiga ma le 'au (galue ma stdin);
  • fa'aopoopo mea fou (mo se fa'ata'ita'iga, meatotino e maua mai ai mea mai le stderr);
  • fa'atinoga o se fa'atonuga o fa'atonuga o lo'o avanoa (mo fa'aoga i le galuega dir());
  • ma isi.

mau

  1. faletusi atamai-env: Github и PyPI
  2. python-shell faletusi: Github и PyPI
  3. Alaala Telegram fa'afouga faletusi

UPD 23.02.2020/XNUMX/XNUMX:
* Ua siitia fale teu oloa, ua toe faafou sootaga talafeagai
* Version python-shell == 1.0.1 o loʻo sauniuni mo le tatalaina i le 29.02.2020/XNUMX/XNUMX. Suiga e aofia ai le lagolago mo le autocomplete poloaiga ma le dir (Shell) poloaiga, faʻatonuina tulafono faʻatasi ma se faʻamatalaga Python le aoga, ma faʻaleleia o pusa.

puna: www.habr.com

Faaopoopo i ai se faamatalaga