د پایتون او باش ملګرتیا جوړول: سمارټ این وی او د پیتون شیل کتابتونونه

ټولو ته ښه ورځ.

نن ورځ، Python نه یوازې د سافټویر محصولاتو جوړولو په برخه کې ترټولو کارول شوې ژبه ده، بلکې د دوی زیربنا هم چمتو کوي. د پایلې په توګه، ډیری ډیوپس، که د دوی په خوښه یا د هغې خلاف وي، باید نوې ژبه زده کړي ترڅو وروسته د ښه زاړه باش سکریپټونو لپاره د ضمیمه په توګه وکارول شي. په هرصورت، Bash او Python د کوډ لیکلو لپاره مختلف طریقې وړاندیز کوي او ځینې ځانګړتیاوې لري، پدې معنی چې د "سانپ ژبې" ته د باش سکریپټونو پورټ کول کله ناکله یو وړ او له کوچني کار څخه لرې وي.

د دیوپس لپاره ژوند اسانه کولو لپاره ، په پایتون کې ډیری ګټور کتابتونونه او اسانتیاوې رامینځته شوي او رامینځته کیدو ته دوام ورکوي. دا مقاله د دې پوسټ لیکوال لخوا رامینځته شوي دوه نوي کتابتونونه تشریح کوي - smart-env и python-shell - او د پیتون سره د کار کولو پیچلتیاو ته د خورا پام کولو اړتیا څخه د ډیوپس څخه د خلاصون لپاره ډیزاین شوی ، د نورو په زړه پوري کارونو لپاره ځای پریږدي. د کتابتونونو د فعالیت ساحه د چاپیریال تغیرات او د بهرنیو اسانتیاوو پیل کول دي.

هرڅوک لیوالتیا لري، مهرباني وکړئ بلی وګورئ.

نوي "بايسکلونه"؟

داسې ښکاري چې ولې د عادي عملیاتو لپاره نوي کڅوړې رامینځته کوي؟ څه شی تاسو د os.environ او subprocess کارولو څخه منع کوي. <طریقه یا ستاسو د خوښې ټولګي> مستقیم؟

زه به په جلا توګه د هر کتابتون په حق کې شواهد وړاندې کړم.

smart-env کتابتون

مخکې له دې چې خپل دماغي ماشوم ولیکئ، دا ګټور دی چې آنلاین لاړ شئ او د چمتو شوي حلونو په لټه کې شئ. البته، د هغه څه د نه موندلو خطر شتون لري چې تاسو ورته اړتیا لرئ، مګر دا د "بیمې پیښه" ده. د یوې قاعدې په توګه، دا طریقه کار کوي او ډیر وخت او هڅې خوندي کوي.

د پایلې په وینا لټون لاندې څرګنده شوه:

  • داسې کڅوړې شتون لري چې په حقیقت کې os.environ ته زنګونه پوښي، مګر په ورته وخت کې یو لړ ګډوډي کړنو ته اړتیا لري (د ټولګي مثال رامینځته کول، په زنګونو کې ځانګړي پیرامیټونه، او نور)؛
  • دلته ښه کڅوړې شتون لري، که څه هم، په کلکه سره په یو ځانګړي اکوسیستم پورې تړلي دي (په عمده توګه د ویب چوکاټونه لکه جینګو) او له همدې امله د فایل پرته ټول نړیوال ندي؛
  • د یو څه نوي کولو لپاره نادرې هڅې شتون لري. د مثال په ډول، ټایپ کول اضافه کړئ او په ښکاره ډول د زنګ وهلو میتودونو په واسطه متغیر ارزښتونه تحلیل کړئ
    get_<typename>(var_name)

    یا دلته یو بل حل، کوم چې په هرصورت، د اوس بدنام شوي Python 2 ملاتړ نه کوي (کوم چې، سره سره رسمي RIP، لاهم د لیکل شوي کوډ غرونه او ټول ایکوسیستمونه شتون لري)؛

  • د ښوونځي د زده کونکو لاسي صنایع شتون لري چې د ځینو نامعلومو دلیلونو لپاره، د PyPI په پورته برخه کې پای ته رسیدلي او یوازې د نوي کڅوړو نومولو سره ستونزې رامینځته کوي (په ځانګړې توګه، د "سمارټ-env" نوم یو اړین اقدام دی).

او دا لیست کولی شي د اوږدې مودې لپاره لاړ شي. په هرصورت، پورته ټکي کافي وو چې ما د یو څه اسانه او نړیوال کولو مفکورې په اړه لیوالتیا ترلاسه کړه.

هغه اړتیاوې چې د smart-env لیکلو دمخه ټاکل شوې وې:

  • د کارولو ترټولو ساده سکیم
  • په اسانۍ سره د تنظیم وړ ډیټا ټایپ کولو ملاتړ
  • Python 2.7 مطابقت لري
  • د ازموینو لخوا ښه کوډ پوښښ

په نهایت کې، دا ټول درک شول. دلته د کارولو یوه بیلګه ده:

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

لکه څنګه چې تاسو د مثال څخه لیدلی شئ، د نوي ټولګي سره کار کولو لپاره، تاسو اړتیا لرئ چې دا وارد کړئ (تاسو اړتیا نلرئ یو مثال جوړ کړئ - د اضافي عمل منفي). هرډول چاپیریال متغیر ته لاسرسی د ENV ټولګي د متغیر په توګه په ګوته کولو سره ترلاسه کیږي ، کوم چې په حقیقت کې دا ټولګي د اصلي سیسټم چاپیریال لپاره یو هوښیار ریپر جوړوي ، پداسې حال کې چې په ورته وخت کې دا د نږدې هر سیسټم لپاره د احتمالي ترتیب کولو څیز بدلوي ( ورته طریقه، د بیلګې په توګه، په Django کې ترلاسه کیږي، یوازې هلته د ترتیب کولو څیز پخپله د ترتیباتو ماډل/پیکج دی).

د اتوماتیک ټایپ کولو ملاتړ حالت فعالول / غیر فعال کول د دوه میتودونو په کارولو سره ترلاسه کیږي - enable_automatic_type_cast() او disable_automatic_type_cast(). دا اسانه کیدی شي که چیرې د چاپیریال متغیر د JSON په څیر سیریل شوی څیز ولري یا حتی یوازې یو بولین ثابت وي (په واضح ډول په جینګو کې د DEBUG متغیر تنظیم کول د چاپیریال متغیر د "درست" تارونو سره پرتله کولو سره یو له خورا عام قضیو څخه دی). مګر اوس اړتیا نشته چې په ښکاره ډول تارونه بدل کړئ - ډیری اړین کړنې لا دمخه د کتابتون په ژورو کې ځای په ځای شوي او یوازې د عمل کولو لپاره سیګنال ته په تمه دي. 🙂 په عموم کې، ټایپ کول په شفاف ډول کار کوي او نږدې د ټولو موجود ډیټا ډولونو ملاتړ کوي (منجمد، پیچلي او بایټونه ندي ازمول شوي).

د پایتون 2 ملاتړ کولو اړتیا په حقیقت کې د هیڅ قرباني سره نه پلي شوې (د پایتون 3 وروستي نسخو کې د ټایپ کولو پریښودل او ځینې "شوګر کینډي") ، په ځانګړي توګه د هر اړخیز شپږ څخه مننه (د میټاکلاسونو کارولو ستونزې حل کولو لپاره. ).

مګر ځینې محدودیتونه شتون لري:

  • د Python 3 ملاتړ معنی لري 3.5 او لوړ نسخه (ستاسو په پروژه کې د دوی شتون یا د سستۍ یا د پرمختګ لپاره د اړتیا نشتوالي پایله ده، ځکه چې دا ستونزمن کار دی چې د هدف دلیل سره راشي چې ولې تاسو لاهم په 3.4 کې یاست)؛
  • په Python 2.7 کې، کتابتون د سیټ لیټریالونو بې ترتیب کولو ملاتړ نه کوي. تفصیل دلته. مګر که څوک وغواړي چې دا پلي کړي، تاسو ته ښه راغلاست :)

کتابتون د تېروتنو د تجزیه کولو په صورت کې د استثنا میکانیزم هم لري. که تار د کوم موجود تحلیل کونکي لخوا ونه پیژندل شي، ارزښت یو تار پاتې کیږي (بلکې، د اسانتیا د دلیلونو لپاره او د معمول منطق سره د شاتړ مطابقت لپاره چې څنګه په باش کې تغیرات کار کوي).

د python-shell کتابتون

اوس زه به تاسو ته د دوهم کتابتون په اړه ووایم (زه به د موجوده انلاګونو نیمګړتیاو توضیحات پریږدم - دا ورته ورته دی چې د سمارټ این وی اینالوګونو لپاره بیان شوي - دلته и دلته).

په عموم کې، د پلي کولو مفکوره او د هغې لپاره اړتیاوې ورته ورته دي چې د سمارټ-env لپاره بیان شوي، لکه څنګه چې د مثال څخه لیدل کیدی شي:

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

مفکوره دا ده:

  1. یو واحد ټولګی چې د پیتون نړۍ کې د باش استازیتوب کوي؛
  2. هر باش کمانډ د شیل ټولګي د فعالیت په نوم یادیږي؛
  3. د هر فنکشن کال لپاره پیرامیټونه بیا د اړونده بش کمانډ کال ته لیږدول کیږي؛
  4. هره کمانډ "دلته او اوس" په دې وخت کې اجرا کیږي چې ورته ویل کیږي، i.e. همغږي تګلاره کار کوي؛
  5. دا ممکنه ده چې په stdout کې د کمانډ محصول ته لاسرسی ومومئ، او همدارنګه د بیرته ستنیدو کوډ؛
  6. که کمانډ په سیسټم کې نه وي، یو استثناء اچول کیږي.

لکه څنګه چې د smart-env سره، د Python 2 لپاره ملاتړ شتون لري (که څه هم یو څه نور قرباني وینې ته اړتیا وه) او د Python 3.0-3.4 لپاره هیڅ ملاتړ نشته.

د کتابتون د پراختیا پلانونه

تاسو اوس کتابتونونه کارولی شئ: دواړه په رسمي PyPI کې ځړول شوي. سرچینې په ګیتوب کې شتون لري (لاندې وګورئ).

دواړه کتابتونونه به د علاقمندانو لخوا راټول شوي نظرونو په پام کې نیولو سره رامینځته شي. او، که چیرې دا ستونزمن وي چې په سمارټ-env کې د مختلفو نوو ځانګړتیاوو سره راشي، نو په python-shell کې یقینا د اضافه کولو لپاره بل څه شتون لري:

  • د غیر بلاک کولو تلیفونونو لپاره ملاتړ؛
  • د ټیم سره د متقابل اړیکو امکان (د stdin سره کار کول)؛
  • د نوي ملکیتونو اضافه کول (د مثال په توګه، ملکیت د stderr څخه محصول ترلاسه کول)؛
  • د موجود کمانډونو لارښود پلي کول (د dir() فنکشن سره کارولو لپاره؛
  • او داسې نور.

مرجع

  1. سمارټ env کتابتون: Github и PyPI
  2. د python-shell کتابتون: Github и PyPI
  3. د ټیلیګرام چینل د کتابتون تازه معلومات

UPD 23.02.2020/XNUMX/XNUMX:
* ذخیره لیږدول شوي، اړونده لینکونه تازه شوي
* د python-shell==1.0.1 نسخه په 29.02.2020/XNUMX/XNUMX کې د خپریدو لپاره چمتو کیږي. په بدلونونو کې د کمانډ اتوماتیک او dir (Shell) کمانډ لپاره ملاتړ شامل دي، د غلط Python پیژندونکي سره د کمانډونو چلول، او د بګ اصلاحات شامل دي.

سرچینه: www.habr.com

Add a comment