وب لاگ امیرحسین اسعدی

آنچه یادگرفتم، خواندم و دیدم رو اینجا به اشتراک می‌گذارم
I share what I learned, read and saw

طبقه بندی موضوعی
آخرین نظرات
  • ۸ خرداد ۰۲، ۱۵:۲۲ - احمد صداقت زاده
    عالی

۲ مطلب با کلمه‌ی کلیدی «آموزش پایتون» ثبت شده است

دیباگ کردن پایتون در گوگل کولب

به روزرسانی: ۲۰تیر

اگر شما هم ترجیح میدن به جای کد زدن توی محیط‌های برنامه‌نویسی، بدون دردسر نصب کتابخونه‌ها در گوگل کلب کد بزنید، احتمالا دلتون برای بعضی ویژگی‌های خوب اونجا تنگ شده مثلا یک workspaceکه بتونید توش متغیر‌ها و اندازه شون و مقدار درونشون رو ببینید، یا دیباگری که بتونید کدهاتون رو خط به خط اجرا کنید. برای اجرا کردن خط به خط کد‌ها می‌تونید از کتابخونه ipdb استفاده کنید. برای نصبش کافیه دستور زیر رو اجرا کنید:

!pip install -Uqq ipdb
و بعد فراخوانیش کنید

import ipdb

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

%pdb on

و اگه خواستین خاموشش کنید کافیه این دستور رو اجرا کنید
%pdb off
اگر میخواهید در قسمت خاصی از کد break point بگذارید از این دستور استفاده کنید:

ipdb.set_trace()

اگر خواستین که کد‌های بیشتری اطراف کدی که داره اجرا میشه رو ببینید، می‌تونید دستور بالا رو به این صورت تغییر بدین الان ۶ خط از بالا و ۶ خط از پایین رو نشون میده:

ipdb.set_trace(context = 12)

وقتی اجرای کد متوقف بشه حالا می‌تونید کامندهای دلخواه تون رو وارد کنید، مثلا:

دستور

توضیح

h(elp)

نشون دادن‌ راهنما

h(elp) COMMAND

نشون دادن راهنمای یک دستور خاص

c(ontinue)

ادامه اجرای کد تا رسیدن به بریک پوینت بعدی

n(ext)

اجرای خط بعدی

s(tep)

اجرای کد بعدی(اگه تابعی باشه میره داخل)

r(eturn)

اجرا تا دستور ریترن

l(ist)

نمایش کدهای بیشتری در اطراف خط اجرایی

w(here)

Shows the stacktrace i.e. the chain of functions
that made it reach the current function

a(rguments)

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

q(uit)

خروج از دیباگر

حواستون باشه که نمیشه هرجا خواستین بریک پوینت بذارین یا باید داخل یک تابع باشه یا داخل حلقه for

 

منبع(+)

محیط مجازی در پایتون

فرض کنید شما یک وبسایت با زبان پایتون نوشتین و از دو تا کتابخونه numpy نسخه ۸ و pillow نسخه ۵ استفاده می‌کنید، در حالت عادی میشه انیطوری تشبیه کرد که هر وقت میخواین سایتتون رو اجرا کنید سایتتون کتابدار(شاید این نقش سیتم عامل باشه) رو صدا میزنه و میگه منو وصل کن به کتابخونه numpy و بعدش کارشو انجام میده. حالا فرض کنید شما برای انجام دادن مشق دانشگاه تون لازمه که نسخه ۱۰ numpy رو نصب کنید، حلا که میخوای سایتت ور اجرا کنی وقتی سایتت کتابدار رو صدا میزنه میگه نام پای رو برام بیار همه حرفای این نام پای جدید رو نمی فهمه در نتیجه به خطا بر میخوره.

راه حل چیه؟ شما باید محیط برنامه هاتون رو کپسوله کنید یعنی هر برنامه توی یک اتاق جدا با یک کتاب دار جدا باشه پس من یک اتاق جدید درست میکنم روی درش هم مینویسم سایت من و روش همون نامپای ۸ و پیلو ۵ رو نصب میکنم و سایتمو میندازم اون تو از این به بعد هر بار سایتم رو اجرا کنم اون کتاب دار خودشو داره و کتبادارش هم نامپای نسخه رو براش میاره و کارش راه میفته از طرف دیگه هم یک اتاق دیگه دارم به اسم مشق یادگیری ماشین که اونجا نام پای ۱۰ رو نصب کرده و هر وقت برنامه‌شو اجرا میکنم کتابدار اون اتاق برای برنامه نامپای ۱۰ رو میاره و دیگه این دو برنامه برای هم تداخلی ایجاد نمیکنن.

venv

حالا چطوری میتونه اتاق های جدا داشته باشیم یا به عبارت دیگه برنامه هامون رو کپسوله کنیم؟

برای نصب راهنمای رسمی خودشون رو از این آدرس دنبال کنید

https://virtualenv.pypa.io/en/latest/index.html

حالا که نصب کردین برین اونجا که میخواین پروژه تون رو ایجاد کنید و یک دایرکتوری به اسم پروژتون ایجاد کنید بعد این دستور رو وارد کنید

virtualenv my_mashgh

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

my_mashgh\Scripts\activate

حالا باید اول دستورات تون این عبارت ظاهر شده باشه (venv) که یعنی دیگه وارد اتاق شدین :) و حالا میتونید هر نسخه از هر کتابخونه ای که دوست دارین رو نصب کنید بدون اینکه به کل سیستم اعمال بشه.

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

my_mashgh\Scripts\deactivate.bat