Mamorona Python sy Bash Friendship: tranomboky smart-env sy python-shell

Bonne journΓ©e daholo.

Amin'izao fotoana izao, Python dia iray amin'ireo fiteny be mpampiasa indrindra amin'ny sehatry ny famoronana tsy ny vokatra rindrambaiko ihany, fa ny fanomezana ny fotodrafitrasany. Vokatr'izany dia maro ny devops, na amin'ny sitrapony na amin'ny fanoherana azy, no voatery nianatra fiteny vaovao mba hampiasaina any aoriana ho fanampin'ny soratra Bash taloha. Na izany aza, ny Bash sy Python dia milaza fomba hafa amin'ny fanoratana kaody ary manana endri-javatra sasany, midika izany fa ny fandefasana script Bash amin'ny "fitenin'ny bibilava" indraindray dia lasa asa mavesa-danja sy lavitra ny asa tsy misy dikany.

Mba hanamora ny fiainana ho an'ny devops dia maro ny tranomboky sy fitaovana ilaina amin'ny Python no noforonina ary mbola noforonina. Ity lahatsoratra ity dia mamaritra tranomboky vaovao roa noforonin'ny mpanoratra ity lahatsoratra ity - smart-env ΠΈ akorandriaka python - ary natao hanamaivanana ny devops amin'ny filΓ na fitandremana be amin'ny saro-pady amin'ny fiasana amin'ny Python, mamela toerana hanaovana asa mahaliana kokoa. Ny sahan'ny asan'ny tranomboky dia ny fiovan'ny tontolo iainana sy ny fandefasana fitaovana ivelany.

Izay liana dia jereo ny saka.

"bisikileta" vaovao?

Toa, maninona no mamorona fonosana vaovao ho an'ny asa mahazatra? Inona no manakana anao tsy hampiasa os.environ sy subprocess.<fomba na kilasy tianao> mivantana?

Hanome porofo mitokana ho an'ny tranomboky tsirairay aho.

tranomboky smart-env

Alohan'ny hanoratana ny atidohanao manokana dia ilaina ny mandeha an-tserasera ary mitady vahaolana efa vita. Mazava ho azy fa atahorana ny tsy hahita izay ilainao, fa ity dia "hetsika fiantohana". Amin'ny maha-fitsipika, io fomba fiasa io dia miasa ary mamonjy fotoana sy ezaka be.

Araka ny valiny mitady nambara ireto manaraka ireto:

  • misy fonosana izay tena mametaka ny antso amin'ny os.environ, fa miaraka amin'izay koa dia mitaky hetsika manelingelina (mamorona ohatra amin'ny kilasy iray, masontsivana manokana amin'ny antso, sns.);
  • Misy fonosana tsara, izay, na izany aza, dia mifamatotra mafy amin'ny tontolo iainana manokana (indrindra ny rafitra tranonkala toa an'i Django) ary noho izany dia tsy manerana izao rehetra izao raha tsy misy rakitra;
  • tsy fahita firy ny manandrana manao zava-baovao. Ohatra, ampio fanoratana ary mamadika mazava ny sanda miovaova amin'ny fiantsoana fomba toy ny
    get_<typename>(var_name)

    Na eto vahaolana iray hafa, izay, na izany aza, dia tsy manohana ny Python 2 efa afa-baraka ankehitriny (izay, na dia eo aza RIP ofisialy, mbola misy tendrombohitra misy fehezan-dalΓ na voasoratra sy tontolo iainana manontolo);

  • misy ny asa tanana ataon'ny mpianatra any an-tsekoly, tsy misy antony mazava nahatonga azy ireo niafara tamin'ny PyPI ambony ary miteraka olana amin'ny fanomezana anarana fonosana vaovao (indrindra fa ny anarana hoe "smart-env" dia fepetra ilaina).

Ary ity lisitra ity dia mety haharitra ela. Na izany aza, ireo teboka etsy ambony ireo dia ampy nampientanentana ahy tamin'ny hevitra hanao zavatra mety sy ho an'ny rehetra.

Fepetra napetraka alohan'ny hanoratana smart-env:

  • Ny tetika fampiasana tsotra indrindra
  • Fanohanana fanoratana angon-drakitra mora azo
  • Python 2.7 mifanentana
  • Fandrakofana kaody tsara amin'ny fitsapana

Tamin'ny farany dia tanteraka izany rehetra izany. Ity misy ohatra iray amin'ny fampiasana:

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

Araka ny hitanao amin'ny ohatra, mba hiasa amin'ny kilasy vaovao dia mila manafatra azy fotsiny ianao (tsy mila mamorona ohatra ianao - minus ny hetsika fanampiny). Ny fidirana amin'ny fari-piainan'ny tontolo iainana rehetra dia azo amin'ny alΓ lan'ny fanondroana azy ho fari-piainan'ny kilasy ENV, izay, raha ny marina, dia mahatonga an'io kilasy io ho famonosana intuitive ho an'ny tontolon'ny rafitra teratany, ary mamadika azy ho zavatra azo atao ho an'ny rafitra rehetra ( fomba iray mitovy amin'izany, ohatra, dia tratra ao Django , ao ihany no misy ny fikandran'ny configuration dia ny module/package setup).

Ny fampandehanana/famonoana ny fomba fanohanana fanoratana mandeha ho azy dia vita amin'ny fomba roa - enable_automatic_type_cast() sy disable_automatic_type_cast(). Mety ho mety izany raha toa ka misy zavatra mitovy amin'ny JSON serialized ny fari-piainan'ny tontolo iainana na dia tsy miovaova Boolean fotsiny aza (mametraka mazava ny fari-piadidiana DEBUG ao Django amin'ny fampitahana ny fari-piainan'ny tontolo iainana miaraka amin'ny tady "valid" dia iray amin'ireo tranga mahazatra indrindra). Saingy ankehitriny dia tsy ilaina ny manova mazava ny tady - ny ankamaroan'ny hetsika ilaina dia efa tafiditra ao amin'ny halalin'ny tranomboky ary miandry famantarana fotsiny. πŸ™‚ Amin'ny ankapobeny, miasa mangarahara ny fanoratana ary manohana saika ny karazana angona voaorina rehetra (tsy voasedra ny frozenset, complexe ary bytes).

Ny fepetra hanohanana ny Python 2 dia nampiharina tsy nisy sorona (ny fandaozana ny fanoratana sy ny sasany amin'ireo "siramamy" amin'ny dikan-teny farany an'ny Python 3), indrindra indrindra, noho ny enina eny rehetra eny (mba hamahana ny olan'ny fampiasana metaclasses. ).

Saingy misy fameperana sasany:

  • Ny fanohanan'ny Python 3 dia midika hoe dikan-teny 3.5 sy ambony kokoa (ny fisian'izy ireo ao amin'ny tetikasanao dia vokatry ny hakamoana na ny tsy fisian'ny fanatsarana, satria sarotra ny mamorona antony tsy misy dikany izay mbola eo amin'ny 3.4);
  • Ao amin'ny Python 2.7, ny tranomboky dia tsy manohana ny deserialization ny litera napetraka. Description eto. Fa raha misy te hampihatra an'io dia tongasoa :);

Ny trano famakiam-boky koa dia manana mekanika miavaka raha misy hadisoana amin'ny famakafakana. Raha tsy fantatry ny mpanadihady misy ny tady, dia mijanona ho tady ny sandany (fa noho ny antony mahamora sy mifanaraka amin'ny lojika mahazatra amin'ny fomba fiasan'ny variables amin'ny Bash).

tranomboky python-shell

Ankehitriny dia holazaiko aminao ny momba ny tranomboky faharoa (Afoiko ny famaritana ny tsy fahampian'ny analogues efa misy - mitovy amin'ny voalaza ho an'ny smart-env. Analogues - eto ΠΈ eto).

Amin'ny ankapobeny, ny hevitra momba ny fampiharana sy ny fepetra takiana amin'izany dia mitovy amin'ireo voalaza ho an'ny smart-env, araka ny hita amin'ny ohatra:

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

Ny hevitra dia izao:

  1. Kilasy tokana maneho ny Bash ao amin'ny tontolon'ny Python;
  2. Ny baiko Bash tsirairay dia antsoina ho asan'ny kilasy Shell;
  3. Ny mari-pamantarana ho an'ny antso an-tariby tsirairay dia ampidirina amin'ny antso an-tariby Bash mifanaraka amin'izany;
  4. Ny baiko tsirairay dia tanterahina "eto sy ankehitriny" amin'ny fotoana iantsoana azy, i.e. miasa ny fomba fiasa synchronous;
  5. azo atao ny miditra amin'ny famoahana baiko iray ao amin'ny stdout, ary koa ny kaody miverina;
  6. Raha tsy ao anatin'ny rafitra ny baiko dia ariana ny exception.

Tahaka ny amin'ny smart-env, misy fanohanana ny Python 2 (na dia ilaina aza ny rΓ  sorona kely kokoa) ary tsy misy fanohanana ny Python 3.0-3.4.

Drafitra fampandrosoana tranomboky

Afaka mampiasa ny tranomboky ianao izao: samy navoaka tao amin'ny PyPI ofisialy. Misy loharano ao amin'ny Github (jereo eto ambany).

Ireo trano famakiam-boky roa ireo dia hamboarina amin'ny alΓ lan'ny fanehoan-kevitra voaangona avy amin'ireo liana. Ary, raha mety ho sarotra ny mamorona endri-javatra vaovao isan-karazany amin'ny smart-env, dia ao amin'ny python-shell dia misy zavatra hafa ampiana:

  • fanohanana ny antso tsy manakana;
  • ny fahafahana mifandray amin'ny ekipa (miasa amin'ny stdin);
  • manampy fananana vaovao (ohatra, fananana hahazoana vokatra avy amin'ny stderr);
  • fampiharana ny lahatahiry misy baiko misy (ampiasaina amin'ny dir() asa);
  • sy ny sisa.

soratra masina

  1. tranomboky smart-env: Github ΠΈ PyPI
  2. tranomboky python-shell: Github ΠΈ PyPI
  3. Fantsona Telegram fanavaozana tranomboky

UPD 23.02.2020/XNUMX/XNUMX:
* Nafindra ny tahiry, nohavaozina ny rohy mifandraika amin'izany
* Version python-shell==1.0.1 dia voaomana havoaka amin'ny 29.02.2020/XNUMX/XNUMX. Ny fanovana dia misy ny fanohanana ny baiko autocomplete sy ny baiko dir(Shell), ny baiko mandeha amin'ny famantarana Python tsy mety, ary ny fanamboarana ny bug.

Source: www.habr.com

Add a comment