Ua Python thiab Bash Friendship: ntse-env thiab python-plhaub tsev qiv ntawv

Nyob zoo sawv daws.

Niaj hnub no, Python yog ib hom lus siv ntau tshaj plaws hauv kev tsim cov khoom siv software tsis yog lawv tus kheej xwb, tab sis kuj muab lawv cov kev tsim kho vaj tse. Yog li ntawd, ntau tus devops, txawm tias los ntawm lawv lub siab nyiam lossis tawm tsam nws, yuav tsum tau kawm ib hom lus tshiab rau tom qab siv los ntxiv rau cov ntawv qub Bash zoo. Txawm li cas los xij, Bash thiab Python tshaj tawm txoj hauv kev sib txawv rau kev sau cov lej thiab muaj qee yam nta, txhais tau hais tias kev xa cov ntawv Bash mus rau "snake language" qee zaum dhau los ua qhov muaj peev xwm thiab deb ntawm txoj haujlwm tsis tseem ceeb.

Txhawm rau ua kom lub neej yooj yim dua rau devops, ntau lub tsev qiv ntawv muaj txiaj ntsig thiab cov khoom siv hauv Python tau tsim thiab txuas ntxiv tsim. Kab lus no piav txog ob lub tsev qiv ntawv tshiab tsim los ntawm tus kws sau ntawv no - ntse-env ΠΈ python-plhaub - thiab tsim los daws cov devops los ntawm qhov yuav tsum tau them nyiaj ntau rau qhov tsis txaus ntseeg ntawm kev ua haujlwm nrog Python, tawm hauv chav rau ntau yam haujlwm nthuav. Lub peev xwm ntawm kev ua haujlwm ntawm cov tsev qiv ntawv yog ib puag ncig hloov pauv thiab tso tawm cov khoom siv sab nraud.

Leej twg xav tau, thov saib miv.

Tshiab "tsheb kauj vab"?

Nws yuav zoo li, vim li cas thiaj tsim cov pob tshiab rau kev ua haujlwm ncaj ncees? Dab tsi tiv thaiv koj ntawm kev siv os.environ thiab subprocess. <txoj kev lossis chav kawm uas koj xaiv> ncaj qha?

Kuv yuav muab pov thawj pom zoo ntawm txhua lub tsev qiv ntawv sib cais.

smart-env qiv

Ua ntej sau koj tus kheej lub hlwb, nws tseem ceeb heev uas yuav tsum tau mus online thiab nrhiav cov kev daws teeb meem npaj txhij. Tau kawg, muaj kev pheej hmoo tsis pom qhov koj xav tau, tab sis qhov no yog qhov "kev pov hwm kev tshwm sim". Raws li txoj cai, txoj hauv kev no ua haujlwm thiab txuag ntau lub sijhawm thiab kev siv zog.

Raws li qhov tshwm sim tshawb cov hauv qab no tau nthuav tawm:

  • muaj cov pob khoom uas tau qhwv hu rau os.environ, tab sis tib lub sij hawm xav tau ib pawg ntawm kev cuam tshuam kev ua haujlwm (tsim ib qho piv txwv ntawm chav kawm, tshwj xeeb tsis nyob hauv kev hu, thiab lwm yam);
  • Muaj cov pob khoom zoo, uas, txawm li cas los xij, nruj me ntsis khi rau ib qho ecosystem tshwj xeeb (feem ntau lub vev xaib zoo li Django) thiab yog li ntawd tsis yog txhua qhov thoob ntiaj teb tsis muaj ntaub ntawv;
  • muaj tsawg sim ua tej yam tshiab. Piv txwv li, ntxiv ntaus ntawv thiab qhia meej meej qhov sib txawv ntawm qhov muaj nuj nqis los ntawm kev hu xov tooj zoo li
    get_<typename>(var_name)

    Los yog ntawm no ib qho ntxiv, uas, txawm li cas los xij, tsis txhawb nqa tam sim no kev txaj muag Python 2 (uas, txawm li cas los xij official RIP, tseem muaj cov roob uas sau code thiab tag nrho cov ecosystems);

  • muaj cov tsev kawm ntawv-cov tub ntxhais kawm khoom siv tes ua, tsis muaj laj thawj vim li cas lawv tau xaus rau hauv PyPI sab saud thiab tsuas yog tsim teeb meem nrog lub npe ntawm cov pob khoom tshiab (tshwj xeeb, lub npe "smart-env" yog qhov tsim nyog ntsuas).

Thiab daim ntawv teev npe no tuaj yeem mus ntev. Txawm li cas los xij, cov ntsiab lus saum toj no tau txaus ua rau kuv zoo siab txog lub tswv yim ntawm kev ua ib yam dab tsi yooj yim thiab universal.

Yuav tsum tau teem ua ntej sau smart-env:

  • Txoj kev siv yooj yim tshaj plaws
  • Yooj yim configurable cov ntaub ntawv ntaus ntawv txhawb nqa
  • Python 2.7 tau tshaj
  • Cov lej zoo los ntawm kev xeem

Thaum kawg, tag nrho cov no twb paub lawm. Nov yog ib qho piv txwv ntawm kev siv:

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

Raws li koj tuaj yeem pom los ntawm qhov piv txwv, ua haujlwm nrog chav kawm tshiab, koj tsuas yog xav tau import nws (koj tsis tas yuav tsim ib qho piv txwv - rho tawm qhov kev txiav txim ntxiv). Kev nkag mus rau txhua qhov kev hloov pauv ib puag ncig yog ua tiav los ntawm kev xa mus rau nws raws li qhov sib txawv ntawm ENV chav kawm, uas, qhov tseeb, ua rau cov chav kawm no muaj kev nkag siab zoo rau cov txheej txheem ib puag ncig, thaum tib lub sijhawm tig nws mus rau qhov khoom tsim tau rau yuav luag txhua qhov system ( Ib txoj hauv kev zoo sib xws, piv txwv li, ua tiav hauv Django, tsuas yog muaj cov khoom teeb tsa yog qhov teeb tsa module / pob nws tus kheej).

Enabling/disabling lub automatic typing support hom yog tiav siv ob txoj kev - enable_automatic_type_cast() thiab disable_automatic_type_cast(). Qhov no tuaj yeem yooj yim yog tias qhov hloov pauv ib puag ncig muaj cov khoom zoo li JSON lossis txawm tias tsuas yog Boolean tas li (tseem ceeb teeb tsa qhov sib txawv ntawm DEBUG hauv Django los ntawm kev sib piv ib puag ncig hloov pauv nrog " siv tau" cov hlua yog ib qho ntawm cov xwm txheej feem ntau). Tab sis tam sim no tsis tas yuav tsum tau hloov cov hlua kom meej meej - feem ntau ntawm cov haujlwm tsim nyog tau muab tso rau hauv qhov tob ntawm lub tsev qiv ntawv thiab tsuas yog tos lub teeb liab los ua. πŸ™‚ Feem ntau, kev ntaus ntawv ua haujlwm pob tshab thiab txhawb nqa yuav luag txhua yam muaj nyob hauv cov ntaub ntawv (frozenset, complex thiab bytes tsis tau sim).

Qhov yuav tsum tau txhawb nqa Python 2 tau ua tiav nrog qhov tsis muaj kev txi (kev tso tseg ntawm kev ntaus ntawv thiab qee qhov "qab zib qab zib" ntawm qhov tseeb versions ntawm Python 3), tshwj xeeb, ua tsaug rau ubiquitous rau (los daws cov teeb meem ntawm kev siv metaclasses. ).

Tab sis muaj qee qhov kev txwv:

  • Python 3 kev txhawb nqa txhais tau hais tias version 3.5 thiab siab dua (lawv muaj nyob hauv koj qhov project yog qhov tshwm sim ntawm kev tub nkeeg lossis tsis xav tau kev txhim kho, vim nws nyuaj los nrog lub hom phiaj vim li cas koj tseem nyob ntawm 3.4);
  • Hauv Python 2.7, lub tsev qiv ntawv tsis txhawb deserialization ntawm cov ntawv sau. Kev piav qhia S, SΡ“S,. Tab sis yog tias leej twg xav siv nws, koj txais tos :);

Lub tsev qiv ntawv kuj muaj ib qho kev zam rau hauv cov ntaub ntawv parsing yuam kev. Yog tias txoj hlua tsis tuaj yeem lees paub los ntawm ib qho ntawm cov khoom ntsuas muaj, tus nqi tseem tshuav ib txoj hlua (xws li, vim li cas ntawm qhov yooj yim thiab rov qab sib raug zoo nrog cov logic li niaj zaus ntawm kev hloov pauv ua haujlwm hauv Bash).

python-plhaub tsev qiv ntawv

Tam sim no kuv mam li qhia koj txog lub tsev qiv ntawv thib ob (Kuv mam li tshem tawm cov lus piav qhia ntawm qhov tsis txaus ntawm cov analogues uas twb muaj lawm - nws zoo ib yam li tau piav qhia rau smart-env. Analogues - S, SΡ“S, ΠΈ S, SΡ“S,).

Feem ntau, lub tswv yim ntawm kev siv thiab cov kev xav tau rau nws zoo ib yam li cov uas tau piav qhia rau smart-env, raws li tau pom los ntawm qhov piv txwv:

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

Lub tswv yim yog qhov no:

  1. Ib chav kawm uas sawv cev rau Bash hauv Python ntiaj teb;
  2. Txhua Bash hais kom ua yog hu ua lub luag haujlwm ntawm Shell class;
  3. Cov kev txwv rau txhua qhov kev hu xov tooj yog tom qab ntawd dhau mus rau qhov sib txuas Bash hais kom hu;
  4. Txhua qhov kev hais kom ua "no thiab tam sim no" thaum lub sijhawm nws hu ua, i.e. synchronous mus kom ze ua haujlwm;
  5. nws muaj peev xwm nkag mus rau qhov tso zis ntawm cov lus txib hauv stdout, nrog rau nws cov lej xa rov qab;
  6. Yog hais tias cov lus txib tsis nyob rau hauv lub system, ib qho kev zam raug pov tseg.

Raws li nrog smart-env, muaj kev txhawb nqa rau Python 2 (txawm hais tias yuav tsum muaj cov ntshav txi ntau me ntsis) thiab tsis muaj kev txhawb nqa rau Python 3.0-3.4.

Cov phiaj xwm kev txhim kho tsev qiv ntawv

Koj tuaj yeem siv cov tsev qiv ntawv tam sim no: ob qho tib si tau muab tso rau ntawm PyPI official. Cov peev txheej muaj nyob rau ntawm Github (saib hauv qab).

Ob lub tsev qiv ntawv yuav raug tsim los suav nrog cov lus tawm tswv yim sau los ntawm cov neeg nyiam. Thiab, yog tias nws yuav nyuaj rau tuaj nrog ntau yam tshiab ntawm cov ntse-env, tom qab ntawd hauv python-plhaub yeej muaj lwm yam ntxiv ntxiv:

  • kev them nyiaj yug rau kev hu tsis thaiv;
  • muaj peev xwm sib tham sib tham nrog pab pawg (ua haujlwm nrog stdin);
  • ntxiv cov khoom tshiab (piv txwv li, cov cuab yeej kom tau txais cov khoom tso tawm los ntawm stderr);
  • kev siv cov npe ntawm cov lus txib muaj (rau siv nrog dir() muaj nuj nqi);
  • thiab ua li ntawd.

ua tim khawv

  1. smart-env tsev qiv ntawv: github ΠΈ PyPI
  2. python-plhaub tsev qiv ntawv: github ΠΈ PyPI
  3. Telegram channel cov ntaub ntawv tshiab

PAB 23.02.2020/XNUMX/XNUMX:
* Cov chaw khaws cia tau raug tsiv mus, cov kev sib txuas tau raug hloov kho
* Version python-shell==1.0.1 tab tom npaj tso tawm rau 29.02.2020/XNUMX/XNUMX. Cov kev hloov pauv suav nrog kev txhawb nqa rau cov lus txib autocomplete thiab dir (plhaub) hais kom ua, khiav cov lus txib nrog tus lej Python tsis raug, thiab kho kab laum.

Tau qhov twg los: www.hab.com

Ntxiv ib saib