Making Python and Bash Friendship: smart-env and python-shell library

Kia ora koutou katoa.

I tenei ra, ko Python tetahi o nga reo e tino whakamahia ana mo te hanga i nga hua rorohiko anake, engari ko te whakarato i o raatau hanganga. Ko te mutunga mai, he maha nga kaiwhakatakoto whakaaro, ahakoa na runga i ta raatau hiahia, na te kore ranei, i ako i tetahi reo hou hei whakamahi i muri mai hei taapiri mo nga tuhinga tawhito pai o Bash. Heoi, he rereke nga huarahi a Bash me Python ki te tuhi waehere me etahi ahuatanga, te tikanga ko te kawe i nga tuhinga a Bash ki te "reo nakahi" i etahi wa ka puta he mahi maamaa me te tawhiti atu i nga mahi iti.

Kia ngawari ake te oranga mo nga devops, he maha nga whare pukapuka whaihua me nga taputapu i roto i te Python kua hangaia, ka mahia tonutia. Ko tenei tuhinga e whakaatu ana i nga whare pukapuka hou e rua i hangaia e te kaituhi o tenei panui - atamai-env и anga-python - i hoahoatia hei whakaora i te hunga i te hiahia ki te aro nui ki nga uauatanga o te mahi me te Python, ka waiho he waahi mo nga mahi whakamere. Ko te whānuitanga o nga mahi a nga whare pukapuka ko nga taurangi taiao me te whakarewatanga o nga taputapu o waho.

Ko te hunga e hiahia ana, tirohia koa te ngeru.

He "paihikara" hou?

Ko te ahua nei, he aha te take i hanga ai he kete hou mo nga mahi noa? He aha te mea e aukati ana i a koe ki te whakamahi tika i te os.environ me te tukatuka iti.<tikanga, te karaehe ranei e pai ana koe>?

Ka hoatu e ahau he taunakitanga mo ia whare pukapuka motuhake.

whare pukapuka smart-env

I mua i te tuhi i to whakaaro ake, he pai te haere ki te ipurangi me te rapu i nga otinga kua rite. Ae ra, he tupono ka kore e kitea nga mea e hiahia ana koe, engari he "kaupapa inihua" tenei. Hei tikanga, ka mahi tenei huarahi me te whakaora i te wa me te kaha.

Hei ki nga hua rapunga ko enei e whai ake nei i kitea:

  • kei reira nga kete ka takai i nga waea ki te os.environ, engari i te wa ano e hiahia ana kia maha nga mahi whakararuraru (te hanga tauira o te karaehe, nga tawhā motuhake i roto i nga waea, me etahi atu);
  • He pai nga kohinga, heoi, he mea tino here ki tetahi puunaha rauwiringa kaiao (te nuinga o nga anga tukutuku penei i a Django) na reira kaore i te ao katoa kaore he konae;
  • he onge nga ngana ki te mahi i tetahi mea hou. Hei tauira, tāpiri patopato me te whakamaarama i nga uara taurangi ma te karanga tikanga penei
    get_<typename>(var_name)

    I konei ranei kotahi ano otinga, heoi, kaore i te tautoko i te Python 2 kua whakama inaianei (he ahakoa RIP mana, kei reira tonu nga maunga o nga tohu tuhi me nga punaha rauwiringa kaiao katoa);

  • He mahi toi a te kura-akonga, na te mea e kore e mohiotia, ka mutu ki te taha whakarunga o te PyPI ka puta he raruraru ki te whakaingoa i nga kohinga hou (ina koa, ko te ingoa "smart-env" he tikanga tika).

A ka taea e tenei rarangi te haere mo te wa roa. Heoi, ko nga mea i runga ake nei i nui hei whakaohooho i ahau mo te whakaaro ki te hanga i tetahi mea watea me te ao.

Nga whakaritenga i whakatakotoria i mua i te tuhi smart-env:

  • Ko te kaupapa whakamahi tino ngawari
  • Tautoko patopato raraunga ngawari
  • Python 2.7 hototahi
  • He pai te kapinga waehere ma nga whakamatautau

I te mutunga, i tutuki enei mea katoa. Anei tetahi tauira o te whakamahi:

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

Ka taea e koe te kite mai i te tauira, ki te mahi me tetahi karaehe hou, me kawemai noa koe (kaore koe e hiahia ki te hanga tauira - haunga te mahi taapiri). Ko te uru ki tetahi taurangi taiao ka tutuki ma te kii ki a ia hei taurangi o te akomanga ENV, na te mea, ka waiho tenei karaehe hei takai mohio mo te taiao punaha taketake, i te wa kotahi ka huri hei ahanoa whirihoranga mo te nuinga o nga punaha ( he huarahi rite, hei tauira, ka tutuki i Django , kei reira anake te ahanoa whirihoranga ko te waahanga tautuhinga / kete ake).

Ko te whakahohe/whakakore i te aratau tautoko patopato aunoa ka tutuki ma te whakamahi i nga tikanga e rua - enable_automatic_type_cast() and disable_automatic_type_cast(). He watea tenei ki te mea kei roto i te taurangi taiao he ahanoa rite-JSON rangatū, ahakoa he taurite Boolean noa ranei (te tautuhi i te taurangi DEBUG ki Django ma te whakatairite i te taurangi taiao me nga aho "mana" tetahi o nga keehi tino noa). Engari inaianei kaore he take ki te huri i nga aho - ko te nuinga o nga mahi e tika ana kua whakauruhia ki roto i te hohonutanga o te whare pukapuka, kei te tatari noa mo te mahi tohu. 🙂 I te nuinga o te waa, he maamaa te mahi pato me te tautoko tata ki nga momo raraunga hanga-roto katoa (kaore i whakamatauria te whakatio, te matatini me nga paita).

Ko te whakaritenga ki te tautoko i te Python 2 i whakatinanahia me te kore he patunga tapu (ko te whakarere i te patopato me etahi o nga "karaka huka" o nga putanga hou o Python 3), ina koa, he mihi ki nga waahi katoa e ono (ki te whakaoti rapanga o te whakamahi metaclasses. ).

Engari tera ano etahi here:

  • Ko te tautoko a Python 3 ko te putanga 3.5 me te teitei ake (ko te noho ki to kaupapa na te mangere, te kore ranei o te hiahia ki te whakapai ake, na te mea he uaua ki te puta mai he take whai take kei te noho tonu koe ki te 3.4);
  • I roto i te Python 2.7, karekau te whare pukapuka e tautoko i te whakamaaramatanga o nga huinga kupu. Whakaahuatanga konei. Engari ki te hiahia tetahi ki te whakatinana, nau mai :);

Kei te wharepukapuka he tikanga motuhake inaa he hapa porotiti. Mena karekau e mohiohia te aho e tetahi o nga kaitirotiro e waatea ana, ka noho tonu te uara he aho (heoi, mo te pai me te hototahi whakamuri ki te arorau o mua mo te mahi o nga taurangi i Bash).

whare pukapuka python-shell

Inaianei ka korero atu ahau ki a koe mo te whare pukapuka tuarua (Ka waiho e au te whakamaarama mo nga ngoikoretanga o nga tairitenga o naianei - he rite ki tera i whakaahuahia mo te atamai-env. Analogues - konei и konei).

I te nuinga o te waa, ko te whakaaro o te whakatinanatanga me nga whakaritenga mo taua mea he rite ki nga korero mo te smart-env, ka kitea mai i te tauira:

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

Ko te whakaaro ko tenei:

  1. He akomanga kotahi e tohu ana i a Bash i te ao Python;
  2. Ko ia whakahau Bash ka kiia he mahi a te akomanga Shell;
  3. Ko nga tawhā mo ia waea mahi ka tukuna ki te waea whakahau Bash e rite ana;
  4. Ko ia whakahau ka mahia "i konei a inaianei" i te wa e kiia ana, i.e. ka mahi te huarahi tukutahi;
  5. ka taea te uru atu ki te putanga o te whakahau i roto i te stdout, me tana waehere whakahoki;
  6. Mena karekau te whakahau i roto i te punaha, ka maka he tuunga.

Pērā ki te smart-env, he tautoko mo Python 2 (ahakoa he iti ake te toto patunga tapu) me te kore tautoko mo Python 3.0-3.4.

Mahere whanaketanga whare pukapuka

Ka taea e koe te whakamahi i nga whare pukapuka inaianei: kua whakairihia nga mea e rua ki te PyPI mana. Kei te waatea nga puna ki Github (tirohia i raro nei).

Ka whakawhanakehia nga whare pukapuka e rua ma te whakaaro ki nga urupare i kohia mai i te hunga e hiahia ana. A, mena he uaua ki te whakaputa mai i nga momo ahuatanga hou i roto i te smart-env, na, kei roto i te python-shell he mea ano hei taapiri:

  • tautoko mo nga waea kore-aukati;
  • te kaha ki te whakawhitiwhiti korero me te roopu (mahi me te stdin);
  • te taapiri i nga taonga hou (hei tauira, he taonga ki te whiwhi putanga mai i te stderr);
  • whakatinanatanga o te whaiaronga o nga whakahau e waatea ana (mo te whakamahi me te mahi dir());
  • me te pera.

tohutoro

  1. whare pukapuka smart-env: GitHub и PyPI
  2. whare pukapuka python-shell: GitHub и PyPI
  3. Te hongere Telegram whakahōunga whare pukapuka

UPD 23.02.2020/XNUMX/XNUMX:
* Kua nukuhia nga putunga, kua whakahouhia nga hononga hono
* Putanga python-shell == 1.0.1 kei te whakareri mo te tuku a te 29.02.2020/XNUMX/XNUMX. Ko nga huringa ko te tautoko mo te whakaoti-aunoa whakahau me te whakahau dir(Shell), te whakahaere i nga whakahau me te tohu tohu Python muhu, me te whakatika iro.

Source: will.com

Tāpiri i te kōrero