مرتضی دلیل
مرتضی دلیل
خواندن ۵ دقیقه·۶ سال پیش

پایتون و ویژوال کد

اگر برنامه نویس پایتون باشید حتما محیط Pycharm را بهترین و راحت ترین گزینه برنامه نویسی با این زبان می‌دانید. اما در چند سال اخیر حضور قدرتمند Visual Code را نمی‌توانید نادیده بگیرید.

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

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

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


1. پایتون را روی ویندوز نصب کنید. (لینک دانلود)
توجه کنید که هنگام نصب تیک مربوط به ثبت آدرس پایتون در environment variables را بزنید. با اینکار به فایل اجرایی پایتون در تمامی مسیر های هاردتان دسترسی خواهید داشت ونیاز نیست برای اجرای پایتون حتما داخل فولدر محل نصب پایتون باشید.

2. یک فولدر جدید برای پروژه تان ایجاد کنید. فضای توسعه خود را در همین فولدر ایجاد کنید.
منظور از فضای توسعه، virtual environment است. فضای توسعه در حقیقت محل نگهداری کتابخانه های مورد نیاز شما برای اجرای پروژه است.(تقریبا مثل node_module در پروژه های nodejs یا nuget packages در پروژه های دات نت)
شما دو راه دارید یا کتابخانه ها را در سطح سیستم و در محل نصب پایتون نصب کنید که حالت Global است و یا به شکل Local در فولدر پروژه به کمک virtual environment آنها را داشته باشید تا هنگام انتقال پروژه درگیر کتابخانه و نسخه‌ی مورد نظر نشوید.
برای ایجاد فضای توسعه (مجازی) کد زیر را در کنسول visual code بنویسید:

https://gist.github.com/mortezadalil/b1ea3fa9f60c95877cd2afd5cda18b7c

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

https://gist.github.com/mortezadalil/78004d55f1cca91352ece075cf7ef4ea

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

خطا در اجرای activate به علت اجازه نداشتن سیستم شما!
خطا در اجرای activate به علت اجازه نداشتن سیستم شما!

دستور زیر باعث میشود که شما اجازه اجرای اسکریپت روی سیستمان را صادر کنید و مشکل فوق بر طرف میشود:

https://gist.github.com/mortezadalil/48f42ce3a9e37e9c54fd97293b2df354

حالا دوباره عملیات activate کردن را انجام دهید.
اگر عبارت (venv) پشت خط کنسول دیده شود یعنی با موفقیت محیط مجازی توسعه فعال شده است.

3. کتابخانه های مورد نیازتان را نصب کنید. در اینجا ما Flask را به عنوان نمونه نصب می کنیم تا با یک تیر دو نشان بزنیم و با اجرای یک پروژه وب هم آشنا شویم. میتوانید کتابخانه نصب نکنید و چند خط پایتون بنویسید و به کمک امکان سلکت خطوط و Shift+Enter در ویژوال کد، دستوراتتان را اجرا کنید.(میتوانید Django هم نصب کنید، تفاوت چندانی با Flask در روند نصب و کار با ویژوال کد ندارند.)

نصب flask در پروژه
نصب flask در پروژه

4. پس از نصب فلاسک در فولدر پروژه فایلی به نام app.py میسازیم و کد ساده زیر را که در سایت فلاسک هم به عنوان راه انداز به آن اشاره شده مینویسیم.

https://gist.github.com/mortezadalil/d21a74e2a8722aaf7bbb3a92fd21b836

5. برای اجرای پروژه به کمک ویژوال کد نیاز داریم اکستنشن python روی ویژوال کد نصب باشد. در بخش اکستنشن ها python را سرچ میکنیم، سازنده این اکستنشن microsoft است. پس از نصب، دکمه F5 را میزنیم تا کد اجرا شود. دقت کنید که با فشردن F5 ویژوال کد آدرس پایتونی که قرار است پروژه را اجرا کند می‌پرسد، حتما آدرس درون فولدر پروژه و فولدر venv را انتخاب کنید.

گزینه select Interpreter را انتخاب کنید و سپس مسیر پایتون را مشخص کنید.
گزینه select Interpreter را انتخاب کنید و سپس مسیر پایتون را مشخص کنید.

همچنین برای حالت Debug، نوعِ پروژه را میپرسد (اگر نپرسید روی علامت چرخدنده کلیک کنید)

انتخاب نوع پروژه برای تنظیم فایل launch.json
انتخاب نوع پروژه برای تنظیم فایل launch.json

6. چیزی که باعث اجرای پروژه شما شده در حقیقت تنظیمات همین فایل launch.json است. نکته مهم این است که حالت Debug خود فلاسک 0 است.

فایل launch.json
فایل launch.json

علت صفر بودن حالت دیباگ خودِ پایتون این است که با دیباگِ ویژوال کد تداخل نکند. ما با کمک دیباگ ویژوال کد، به راحتی میتوانیم از break point در پروژه استفاده کنیم.

اما با اینکار اتفاق بدی هم می‌افتد! ما آپدیت خودکار پروژه را از دست میدهیم. یعنی اگر حین اجرا و دیباگ مثلا مقدار یک متغیر را عوض کنید در خروجی مقدار آن تغییر نمیکند، تا زمانیکه یکبار پروژه را stop و دوباره start کنید.

7. اکستنشن Save and run ext را سرچ کنید و روی ویژوال کد نصب کنید تا مشکل فوق حل شود. پس از نصب در داخل فایل settings.json کد زیر را اضافه کنید.

https://gist.github.com/mortezadalil/876d24fbd7ba109464c41379af7be42b

حالا با هر بار فشردن کلید F5 اگر در پروژه تغییری ایجاد کنید و save کنید بطور خودکار پروژه یکبار دیگر اجرا میشود و میتوانید به راحتی از break point و تغییر مقادیر هنگام اجرا استفاده کنید.

8. حتما میدانید برای نگهداری نام و نسخه کتابخانه ها از دستور pip freeze > requirements.txt باید استفاده کرد. با اینکار به راحتی فولدر vent را برای git به شکل ignore دربیاورید. و هر جا پروژه را clone کردید پس از نصب venv و فعال کردن محیط venv طبق دستورالعملی که گفته شد دستور زیر را برای دانلود کتابخانه های ذخیره شده در فایل requirements.txt بنویسید.

pip install -r requirements.txt

9. اکستنشن پایتونِ مایکروسافت تا الان برای import خودکار کتابخانه ها چیز به درد بخوری ارائه نداده؛ این یعنی تصور نکنید که شبیه پروژه های تایپ اسکریپت به راحتی تایپ میکنید و کتابخانه مورد نظر به شکل خودکار بالای کد شما import میشود.
راه حل در ویژوال کد رایت کلیک روی آیتم مورد نظر و انتخاب گزینه resolve import است.

ایمپورت مربوط به فلاسک را پاک کردیم و روی کلمه Flask رایت کلیک کردیم.
ایمپورت مربوط به فلاسک را پاک کردیم و روی کلمه Flask رایت کلیک کردیم.

لیستی از import های حدس زده شده توسط ویژوال کد برای شما نمایش داده میشود که میتوانید گزینه درست را انتخاب کنید!

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

pythonآموزش پایتونآموزش python
برنامه نویس و علاقمند به برنامه نویسی، سینما، فلسفه و هر چیزی که هیجان انگیز باشد. در ویرگول از روزمرگیهای مرتبط با علاقمندیهام خواهم نوشت. در توئیتر و جاهای دیگر @mortezadalil هستم.
شاید از این پست‌ها خوشتان بیاید