چطور اسکریپت های پایتون را اجرا کنیم؟

امیرحسین بیگدلو 12 ماه قبل

یکی از مهمترین مهارتهایی که شما به عنوان توسعه دهنده پایتون نیاز دارید این است که بتوانید اسکریپت ها و کد پایتون را اجرا کنید. این تنها راهی است که می توانید بفهمید کد شما آنطور که برنامه ریزی کرده اید کار می کند یا خیر. حتی این تنها راهی است که می توانید بفهمید کد شما اصلا کار می کند یا خیر!

 

این آموزش گام به گام بسته به محیط، پلتفرم، نیازها و مهارتهای شما به عنوان برنامه نویس، چندین روش برای اجرای اسکریپت های پایتون را به شما نشان میدهد.

 

 

# اسکریپت یا ماژول

در محاسبات، کلمه اسکریپت برای اشاره به یک فایل حاوی یک دنباله منطقی از دستورات یا یک پرونده پردازش دسته ای استفاده می شود. اسکریپت معمولاً یک برنامه ساده است که در یک فایل متنی ساده ذخیره می شود.

 

اسکریپت ها همیشه توسط نوعی مترجم پردازش می شوند که وظیفه اجرای متوالی هر دستور را بر عهده دارد.

 

معمولاً یک فایل متنی ساده حاوی کد پایتون که قرار است مستقیماً توسط کاربر اجرا شود، اسکریپت نامیده می شود ، که یک اصطلاح غیر رسمی است و به معنی فایل برنامه سطح بالا است.

 

از طرف دیگر، یک فایل متنی ساده، که حاوی کد پایتون است که برای وارد کردن و استفاده از یک فایل پایتون دیگر طراحی شده است، ماژول نامیده می شود.

 

بنابراین ، تفاوت اصلی بین ماژول و اسکریپت در این است که ماژول ها باید import شوند، در حالی که اسکریپت ها به طور مستقیم اجرا می شوند.

 

در هر صورت، نکته مهم این است که بدانید چگونه کد پایتونی را که می نویسید در ماژول ها و اسکریپت های خود اجرا کنید.

 

مقاله پیشنهادی: GIL پایتون چیست؟

 

# interpreter پایتون چیست؟

پایتون یک زبان برنامه نویسی عالی است که به شما امکان می دهد در زمینه های مختلف بسیار کارآمد باشید.

 

پایتون همچنین یک نرم افزار به نام مترجم است. مترجم برنامه ای است که برای اجرای کد و اسکریپت های پایتون به آن نیاز دارید. از نظر فنی، مترجم لایه ای از نرم افزار است که بین برنامه شما و سخت افزار رایانه شما کار می کند تا کد شما اجرا شود.

 

مترجم به هر شکل که باشد ، کدی که می نویسید همیشه توسط این برنامه اجرا می شود. بنابراین ، اولین شرط برای اجرای اسکریپت های پایتون این است که مترجم را به درستی روی سیستم خود نصب کنید.

 

مترجم قادر است کد پایتون را به دو روش مختلف اجرا کند:

  • به عنوان اسکریپت یا ماژول
  • به عنوان یک قطعه کد که در یک حالت تعاملی تایپ شده است

 

مقاله پیشنهادی: مدیریت حافظه در پایتون

 

# چطور با حالت تعاملی پایتون کار کنیم؟

یک روش پرکاربرد برای اجرای کد پایتون، حالت تعاملی است. برای شروع حالت تعاملی پایتون، فقط یک خط فرمان یا ترمینال را باز کنید و سپس بسته به نصب پایتون خود پایتون یا python3 را تایپ کنید و سپس Enter را بزنید.

 

در اینجا مثالی از نحوه انجام این کار در لینوکس آورده شده است:

$ python3
Python 3.6.7 (default, Oct 22 2018, 11:32:17)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

 

استاندارد برای حالت تعاملی >>> است، بنابراین به محض مشاهده این کاراکترها، می دانید که در آن هستید.

 

اکنون می توانید کد پایتون را بنویسید و اجرا کنید، تنها ایرادی که وجود دارد این است که وقتی حالت تعاملی را می بندید، کد شما از بین می رود.

 

وقتی به صورت تعاملی کار می کنید، هر عبارت و گزاره ای که وارد می کنید بلافاصله ارزیابی و اجرا می شود:

>>> print('Hello World!')
Hello World!

>>> 2 + 5
7

>>> print('Welcome to Real Python!')
Welcome to Real Python!

 

حالت تعاملی به شما امکان می دهد هر قطعه کدی را که می نویسید آزمایش کنید، که این را به یک ابزار توسعه عالی و مکانی عالی برای آزمایش زبان و تست کد پایتون در حال حرکت تبدیل می کند.

 

برای خروج از حالت تعاملی ، می توانید از یکی از گزینه های زیر استفاده کنید:

  • quit () یا exit () که توابع داخلی هستند
  • ترکیب کلیدهای Ctrl+Z و Enter در ویندوز یا فقط Ctrl+D در سیستم های مشابه یونیکس

 

اگر هرگز با خط فرمان یا ترمینال کار نکرده اید، می توانید این را امتحان کنید:

 

در ویندوز، خط فرمان معمولاً به عنوان command prompt یا MS-DOS console شناخته می شود و برنامه ای به نام cmd.exe است. مسیر دسترسی به این برنامه می تواند به طور قابل توجهی از نسخه سیستم به نسخه دیگر متفاوت باشد.

 

یک راه سریع برای دسترسی به آن فشار دادن کلیدهای ترکیبی Win+R است که شما را به Run می برد. هنگامی که آنجا هستید، cmd را تایپ کنید و Enter را فشار دهید.

 

در GNU/Linux (و سایر یونیکس ها)، چندین برنامه وجود دارد که به شما امکان دسترسی به خط فرمان سیستم را می دهد. برخی از معروف ترین آنها xterm ، Gnome Terminal و Konsole هستند. اینها ابزارهایی هستند که یک پوسته یا ترمینال مانند Bash ، ksh ، csh و غیره را اجرا می کنند.

 

در این حالت، مسیر دسترسی به این برنامه ها بسیار متنوع تر است و بستگی به توزیع و حتی محیط دسکتاپ شما دارد. بنابراین، باید اسناد سیستم خود را بخوانید.

 

در Mac OS X ، می توانید از Applications → Utilities → Terminal به ترمینال سیستم دسترسی پیدا کنید.

 

مقاله پیشنهادی: آموزش ساخت وب سرور با پایتون

 

# مترجم پایتون چطور اسکریپت‌ها را اجرا میکند؟

وقتی سعی می کنید اسکریپت های پایتون را اجرا کنید، یک فرایند چند مرحله ای شروع می شود. در این فرایند مترجم:

 

1. عبارات اسکریپت خود را به صورت متوالی پردازش می کند.

 

2. کد منبع را به یک قالب وسط که به عنوان bytecode معروف است کامپایل می کند.

این bytecode ترجمه کد به زبان سطح پایین تر و مستقل از پلتفرم است. هدف آن بهینه سازی اجرای کد است. بنابراین، دفعه بعد که مترجم کد شما را اجرا می کند، این مرحله کامپایل را دور می زند. به طور دقیق، این بهینه سازی کد فقط برای ماژول ها (فایل های import شده) است، نه برای اسکریپت های اجرایی.

 

3. کد را اجرا می کند.

در این مرحله، چیزی که به عنوان ماشین مجازی پایتون (PVM) شناخته می شود، وارد عمل می شود. PVM موتور زمان اجرا پایتون است. این چرخه ای است که روی دستورالعمل های کد بایتی شما تکرار می شود تا آنها را یک به یک اجرا کنید. PVM جزء جدا شده پایتون نیست. این فقط بخشی از سیستم پایتون است که روی دستگاه خود نصب کرده اید. از نظر فنی، PVM آخرین مرحله از مفسر پایتون است.

 

کل فرایند اجرای اسکریپت های پایتون به عنوان مدل اجرای پایتون(Python Execution Model) شناخته می شود.

 

دوره پیشنهادی: دوره آموزش پایتون (python)

 

# اجرای اسکریپت‌های پایتون با خط فرمان

حالت تعاملی پایتون به شما امکان می دهد خطوط زیادی کد بنویسید، اما با بستن حالت تعاملی، همه چیزهایی را که نوشته اید از دست می دهید. به همین دلیل روش معمول نوشتن برنامه های پایتون استفاده از فایل های متنی ساده است. طبق قرارداد، آن فایلها از پسوند .py استفاده خواهند کرد. (در سیستم های ویندوز می تواند .pyw نیز باشد.)

 

فایل های کد پایتون را می توان با هر ویرایشگر متن ساده ایجاد کرد. اگر تازه وارد برنامه نویسی پایتون شده اید، می توانید Sublime Text را که یک ویرایشگر قدرتمند و آسان برای استفاده است امتحان کنید، اما می توانید از هر ویرایشگری که دوست دارید استفاده کنید.

 

برای پیشرفت در این آموزش، باید یک اسکریپت آزمایشی ایجاد کنید. ویرایشگر متن مورد علاقه خود را باز کرده و کد زیر را بنویسید:

#!/usr/bin/env python3


print('Hello World!')

 

فایل را با نام hello.py ذخیره کنید. با آماده شدن اسکریپت تست، می توانید به خواندن ادامه دهید.

 

 

+ استفاده از دستور python

برای اجرای اسکریپت های پایتون با دستور python، باید یک خط فرمان باز کنید و کلمه python یا python3 را در صورت داشتن هر دو نسخه تایپ کنید و سپس مسیر اسکریپت خود را به شرح زیر دنبال کنید:

$ python3 hello.py
Hello World!

 

اگر همه چیز خوب کار کرد، پس از فشار دادن Enter، عبارت Hello World را مشاهده خواهید کرد! شما به تازگی اولین اسکریپت پایتون خود را اجرا کرده اید!

 

اگر این روش درست کار نمی کند، شاید لازم باشد PATH سیستم، نصب Python، نحوه ایجاد اسکریپت hello.py، مکانی که آن را ذخیره کرده اید و غیره را بررسی کنید.

 

این اساسی ترین و کاربردی ترین روش برای اجرای اسکریپت های پایتون است.

 

 

+ تغییر مسیر خروجی

گاهی اوقات ذخیره خروجی یک اسکریپت برای تجزیه و تحلیل بعدی مفید است. در اینجا نحوه انجام این کار آمده است:

$ python3 hello.py > output.txt

 

این عملیات به جای خروجی استاندارد سیستم (stdout) خروجی اسکریپت شما را به output.txt هدایت می کند. این فرایند معمولاً به عنوان تغییر مسیر جریان شناخته می شود و در هر دو سیستم ویندوز و یونیکس موجود است.

 

اگر output.txt وجود ندارد، به طور خودکار ایجاد می شود. از طرف دیگر، اگر فایل قبلاً وجود داشته باشد، محتویات آن با خروجی جدید جایگزین می شود.

 

در نهایت، اگر می خواهید خروجی اجرای متوالی را به انتهای output.txt اضافه کنید، باید به جای یکی از دو براکت زاویه ای (>>) استفاده کنید ، درست مانند این:

$ python3 hello.py >> output.txt

 

اکنون ، خروجی به انتهای output.txt اضافه می شود.

 

 

+ اجرای ماژول با m-

پایتون مجموعه ای از گزینه های خط فرمان را ارائه می دهد که می توانید با توجه به نیاز خود از آنها استفاده کنید. به عنوان مثال، اگر می خواهید ماژول پایتون را اجرا کنید، می توانید از دستور python -m module-name استفاده کنید.

 

گزینه -m نام ماژول را در sys.path جستجو می کند و محتوای آن را به صورت __main__ اجرا می کند:

$ python3 -m hello
Hello World!

 

 

+ استفاده از نام اسکریپت

در نسخه های اخیر ویندوز، امکان اجرای اسکریپت های پایتون با وارد کردن نام فایل حاوی کد در خط فرمان وجود دارد:

C:\devspace> hello.py
Hello World!

 

این امر ممکن است زیرا ویندوز از رجیستری سیستم و ارتباط فایل برای تعیین برنامه ای که برای اجرای یک فایل خاص استفاده می کند ، استفاده می کند.

 

در سیستم های مشابه یونیکس ، مانند GNU/Linux ، می توانید به چیزی مشابه دست یابید. شما فقط باید یک خط اول با متن #!/usr/bin/env python اضافه کنید ، درست همانطور که در hello.py انجام دادید.

 

برای پایتون، این یک کامنت ساده است ، اما برای سیستم عامل، این خط نشان می دهد که برای اجرای فایل باید از چه برنامه ای استفاده کرد.

 

این خط با #شروع می شود! ترکیبی از کاراکترها که معمولاً hash bang یا shebang نامیده می شود و با مسیر مترجم ادامه می یابد.

 

دو روش برای تعیین مسیر برای مترجم وجود دارد:

  • #!/usr/bin/python: نوشتن مسیر مطلق
  • #!/usr/bin/env python: با استفاده از فرمان env سیستم عامل ، که با جستجوی متغیر محیط PATH پایتون را پیدا و اجرا می کند

 

این گزینه آخر مفید است اگر به خاطر داشته باشید که همه سیستم های مشابه یونیکس مترجم را در یک مکان قرار نمی دهند.

 

در نهایت ، برای اجرای اسکریپتی مانند این ، باید مجوزهای اجرایی را به آن اختصاص دهید و سپس نام فایل را در خط فرمان تایپ کنید.

 

در اینجا یک مثال از نحوه انجام این کار وجود دارد:

$ # Assign execution permissions
$ chmod +x hello.py
$ # Run the script by using its filename
$ ./hello.py
Hello World!

 

با مجوزهای اجرا و خط shebang به درستی پیکربندی شده ، می توانید اسکریپت را به سادگی با تایپ نام فایل آن در خط فرمان اجرا کنید.

 

در نهایت ، باید توجه داشته باشید که اگر اسکریپت شما در دایرکتوری فعلی شما قرار ندارد، باید از مسیر فایل برای عملکرد صحیح این روش استفاده کنید.

 

مقاله پیشنهادی: استفاده از عملگر or در پایتون

 

# اجرای اسکریپت‌های پایتون با حالت تعاملی

همچنین امکان اجرای اسکریپت ها و ماژول های پایتون با یک حالت تعاملی وجود دارد. این گزینه امکانات متنوعی را در اختیار شما قرار می دهد.

 

+ استفاده از امکانات import

هنگام وارد کردن یک ماژول، آنچه واقعاً اتفاق می افتد این است که محتویات آن را برای دسترسی و استفاده بعدی بارگذاری می کنید. نکته جالب در مورد این فرایند این است که import کد را به عنوان آخرین مرحله اجرا می کند.

 

هنگامی که ماژول فقط شامل کلاسها، توابع، متغیرها و تعریفهای ثابت است، احتمالاً نمی دانید که کد در واقع اجرا شده است، اما هنگامی که ماژول شامل فراخوانی به توابع، روشها یا جملات دیگر است که نتایج قابل مشاهده را ایجاد می کند، شاهد اجرای آن خواهم بود.

 

این گزینه دیگری را برای اجرای اسکریپت های پایتون در اختیار شما قرار می دهد:

>>> import hello
Hello World!

 

باید توجه داشته باشید که این گزینه فقط یک بار در هر حالت کار می کند. پس از اولین import، اجرای پی در پی import هیچ کاری نمی کند، حتی اگر محتوای ماژول را تغییر دهید. این امر به این دلیل است که عملیات واردات گران است و بنابراین فقط یک بار اجرا می شود. در اینجا یک مثال است:

>>> import hello  # Do nothing
>>> import hello  # Do nothing again

 

این دو عملیات وارد کردن هیچ کاری انجام نمی دهند، زیرا پایتون می داند که hello قبلاً وارد شده است.

 

برخی از الزامات برای این روش وجود دارد:

  • فایل دارای کد پایتون باید در پوشه کاری فعلی شما قرار داشته باشد.
  • فایل باید در مسیر جستجوی ماژول پایتون (PMSP) باشد، جایی که پایتون به دنبال ماژول ها و بسته هایی است که وارد می کنید.

 

برای اینکه بدانید PMSP فعلی شما چیست، می توانید کد زیر را اجرا کنید:

>>> import sys
>>> for path in sys.path:
...     print(path)
...
/usr/lib/python36.zip
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages

 

با اجرای این کد، لیستی از دایرکتوری ها و فایل های .zip را که پایتون ماژول های وارد شده شما را جستجو می کند، دریافت خواهید کرد.

 

 

+ استفاده از importlib و imp

در کتابخانه استاندارد پایتون ، می توانید importlib را بیابید که ماژولی است که import_module () را ارائه می دهد.

 

با () import_module ، می توانید عملیات import را شبیه سازی کرده و بنابراین، هر ماژول یا اسکریپتی را اجرا کنید. به این مثال توجه کنید:

>>> import importlib
>>> importlib.import_module('hello')
Hello World!
<module 'hello' from '/home/username/hello.py'>

 

هنگامی که ماژول را برای اولین بار وارد کرده اید، نمی توانید برای وارد کردن آن از import استفاده کنید. در این مورد، می توانید از importlib.reload () استفاده کنید، که مترجم را مجبور می کند ماژول را دوباره وارد کند، درست مانند کد زیر:

>>> import hello  # First import
Hello World!
>>> import hello  # Second import, which does nothing
>>> import importlib
>>> importlib.reload(hello)
Hello World!
<module 'hello' from '/home/username/hello.py'>

 

نکته مهمی که باید در اینجا به آن توجه شود این است که آرگومان reload () باید نام یک شیء ماژول باشد، نه یک رشته:

>>> importlib.reload('hello')
Traceback (most recent call last):
    ...
TypeError: reload() argument must be a module

 

اگر از یک رشته به عنوان آرگومان استفاده می کنید، بارگذاری مجدد () یک استثنا TypeError را جرا میکند.

 

importlib.reload() هنگامی مفید است که شما در حال تغییر یک ماژول هستید و می خواهید بررسی کنید که آیا تغییرات شما کار می کند، بدون خروج از حالت تعاملی فعلی.

 

در نهایت ، اگر از Python 2.x استفاده می کنید، imp را خواهید داشت، که ماژولی است که عملکردی به نام reload () را ارائه می دهد. imp.reload () مشابه importlib.reload () عمل می کند. در اینجا یک مثال است:

>>> import hello  # First import
Hello World!
>>> import hello  # Second import, which does nothing
>>> import imp
>>> imp.reload(hello)
Hello World!
<module 'hello' from '/home/username/hello.py'>

 

در Python 2.x، متد reload() یک تابع داخلی است. در نسخه های 2.6 و 2.7 نیز در imp قرار داده شده است تا به انتقال به 3.x کمک کند.

 

 

+ استفاده از runpy.run_module و runpy.run_path

کتابخانه استاندارد شامل ماژولی به نام runpy است. در این ماژول، می توانید run_module () را پیدا کنید، که عملکردی است که به شما امکان می دهد ماژول ها را بدون وارد کردن آنها ابتدا اجرا کنید. این تابع دیکشنری global ماژول اجرا شده را برمی گرداند.

>>> runpy.run_module(mod_name='hello')
Hello World!
{'__name__': 'hello', ... '_': None}}

 

ماژول با استفاده از یک مکانیزم import استاندارد واقع شده و سپس در یک فضای نام جدید ماژول اجرا می شود.

 

اولین آرگومان run_module () باید یک رشته با نام مطلق ماژول (بدون پسوند .py) باشد.

 

از طرف دیگر، runpy همچنین run_path () را ارائه می دهد، که به شما امکان می دهد یک ماژول را با ارائه موقعیت آن در سیستم فایل اجرا کنید:

>>> import runpy
>>> runpy.run_path(path_name='hello.py')
Hello World!
{'__name__': '<run_path>', ... '_': None}}

 

 

+ هک exec

تا کنون، متداول ترین روش های اجرای اسکریپت های پایتون را مشاهده کرده اید. در این بخش، نحوه انجام این کار با استفاده از exec () را مشاهده خواهید کرد، که یک عملکرد داخلی است که از اجرای پویا کد پایتون پشتیبانی می کند.

 

exec () یک روش جایگزین برای اجرای اسکریپت های شما ارائه می دهد:

>>> exec(open('hello.py').read())
'Hello World!'

 

این دستور hello.py را باز می کند، محتوای آن را می خواند و آن را به exec () می فرستد، که در نهایت کد را اجرا می کند.

 

در مثال بالا کد کمی وجود دارد. این فقط یک "هک" است که به شما نشان می دهد پایتون چقدر همه کاره و انعطاف پذیر است.

 

 

# نتیجه گیری

با خواندن این آموزش، شما دانش و مهارت های لازم را کسب کرده اید تا بتوانید اسکریپت ها و کد پایتون را به روش های مختلف و در شرایط مختلف و محیط های توسعه اجرا کنید.

 

اگر این مقاله را دوست داشتید، پیشنهاد میکنیم مطالب زیر را هم ببینید:

دوره آموزش الگوریتم‌نویسی در پایتون

9 مثال واقعی از یادگیری ماشینی

دسترسی پذیری چیست؟

چرا از rabbitmq استفاده کنیم؟

دوآپس(devops) چیست؟

مطالب مشابه



مونگارد