🚨 نگاهی به یکی از ارورهای کار با pip freeze 🚨
در حین توسعه پروژه، ممکنه تعدادی پکیج نصب کنید. وقتی دستور
رو وارد میکنید، یک لیست بلند از پکیجها نمایش داده میشه. اما سوال اینجاست:
چرا بعضی از پکیجها به نظر شما ناشناختهاند؟ 🤔
دستور
این پکیجها از کجا اومدن؟
این پکیجهای اضافی، وابستگیهای پکیجهایی هستن که شما نصب کردید. برای مثال، وقتی Django رو نصب میکنید، pip بهطور خودکار پکیجهایی مثل pytz یا sqlparse رو هم نصب میکنه. اینها وابستگیها هستن که برای عملکرد Django ضروری هستن، ولی شما مستقیماً اونها رو نصب نکردید. 📦
مشکلات هنگام انتقال پروژه به سیستم دیگه
حالا فرض کنید پروژهای دارید که روی سیستم خودتون اجرا شده، ولی میخواهید پروژه رو روی یک سیستم دیگه اجرا کنید. با دستور
ممکنه با ارورهای عجیبی مواجه بشید که مثلا میگه فلان پکیج پیدا نمیشه یا نصب نمیشه. 😣
چرا این ارورها پیش میاد؟
این پکیجها وابستگیهای غیرمستقیم هستند. مثلاً در سیستم لینوکس شما از psycopg2 برای اتصال به PostgreSQL استفاده کردید، اما در ویندوز ممکنه pip بهجای اون، psycopg2-binary رو نصب کنه، چون این نسخه برای ویندوز مناسبتره. پس ممکنه با ارور مواجه بشید چون نسخههای متفاوت برای سیستمهای مختلف استفاده میشه. 💻🖥
نتیجهگیری
برای جلوگیری از این مشکلات، پیشنهاد میکنم از ابزارهایی مثل pip-tools یا Poetry استفاده کنید که وابستگیها رو دقیقتر مدیریت میکنن. همچنین فقط پکیجهای ضروری رو در
این روشها کمک میکنن تا همیشه نسخههای سازگار از پکیجها رو داشته باشید و از مشکلات ناسازگاری در سیستمهای مختلف جلوگیری کنید. 🚀
#python #pip
🆔 @CodeBazDev
در حین توسعه پروژه، ممکنه تعدادی پکیج نصب کنید. وقتی دستور
pip freeze
رو وارد میکنید، یک لیست بلند از پکیجها نمایش داده میشه. اما سوال اینجاست:
چرا بعضی از پکیجها به نظر شما ناشناختهاند؟ 🤔
دستور
pip freeze
تمام پکیجهای نصبشده رو نمایش میده، حتی پکیجهایی که بهطور خودکار نصب شدن! این یعنی ممکنه ۲۰ پکیج ببینید، ولی فقط ۷ تا از اونها رو بشناسید. 😯این پکیجها از کجا اومدن؟
این پکیجهای اضافی، وابستگیهای پکیجهایی هستن که شما نصب کردید. برای مثال، وقتی Django رو نصب میکنید، pip بهطور خودکار پکیجهایی مثل pytz یا sqlparse رو هم نصب میکنه. اینها وابستگیها هستن که برای عملکرد Django ضروری هستن، ولی شما مستقیماً اونها رو نصب نکردید. 📦
مشکلات هنگام انتقال پروژه به سیستم دیگه
حالا فرض کنید پروژهای دارید که روی سیستم خودتون اجرا شده، ولی میخواهید پروژه رو روی یک سیستم دیگه اجرا کنید. با دستور
pip install -r requirements.txt
ممکنه با ارورهای عجیبی مواجه بشید که مثلا میگه فلان پکیج پیدا نمیشه یا نصب نمیشه. 😣
چرا این ارورها پیش میاد؟
این پکیجها وابستگیهای غیرمستقیم هستند. مثلاً در سیستم لینوکس شما از psycopg2 برای اتصال به PostgreSQL استفاده کردید، اما در ویندوز ممکنه pip بهجای اون، psycopg2-binary رو نصب کنه، چون این نسخه برای ویندوز مناسبتره. پس ممکنه با ارور مواجه بشید چون نسخههای متفاوت برای سیستمهای مختلف استفاده میشه. 💻🖥
نتیجهگیری
برای جلوگیری از این مشکلات، پیشنهاد میکنم از ابزارهایی مثل pip-tools یا Poetry استفاده کنید که وابستگیها رو دقیقتر مدیریت میکنن. همچنین فقط پکیجهای ضروری رو در
requirements.txt
قرار بدید تا از اضافه شدن وابستگیهای غیرضروری جلوگیری بشه. ✅این روشها کمک میکنن تا همیشه نسخههای سازگار از پکیجها رو داشته باشید و از مشکلات ناسازگاری در سیستمهای مختلف جلوگیری کنید. 🚀
#python #pip
🆔 @CodeBazDev
❤2
🐍 چرا زبان پایتون اسمش شد پایتون؟
شاید براتون جالب باشه که اسم زبان برنامهنویسی پایتون ربطی به مار پایتون نداره! 😄
در واقع، این نام از یک کمدی تلویزیونی بریتانیایی به نام "Monty Python's Flying Circus" گرفته شده. این برنامه توسط گروه کمدی معروف Monty Python ساخته شده بود که به خاطر طنز خاص و نگاه متفاوتش به دنیای اطراف شناخته میشه.
👨💻 گیدو ون راسوم، خالق زبان پایتون، زمانی که در حال انتخاب اسم برای زبان جدیدش بود، تصمیم گرفت نام پایتون رو از این برنامه کمدی بگیره چون خودش طرفدار این گروه بود و از سبک شوخطبعی و نگاه متفاوتشون الهام گرفت.
#python
🆔 @CodeBazDev
شاید براتون جالب باشه که اسم زبان برنامهنویسی پایتون ربطی به مار پایتون نداره! 😄
در واقع، این نام از یک کمدی تلویزیونی بریتانیایی به نام "Monty Python's Flying Circus" گرفته شده. این برنامه توسط گروه کمدی معروف Monty Python ساخته شده بود که به خاطر طنز خاص و نگاه متفاوتش به دنیای اطراف شناخته میشه.
👨💻 گیدو ون راسوم، خالق زبان پایتون، زمانی که در حال انتخاب اسم برای زبان جدیدش بود، تصمیم گرفت نام پایتون رو از این برنامه کمدی بگیره چون خودش طرفدار این گروه بود و از سبک شوخطبعی و نگاه متفاوتشون الهام گرفت.
#python
🆔 @CodeBazDev
👍2❤1
استفاده از
به چند دلیل بده!
یکی از این دلایل تصادف نامها یا Name Collisions نام داره.
فرض کن در یک فایل جنگو میخوای هم از فرمها استفاده کنی، هم از مدلها
💥 الان مشکل چیه؟
هم django.forms و هم django.db.models کلاسی به اسم CharField دارن!
چون تو import * کردی، آخرین CharField که وارد شده (models.CharField) جایگزین forms.CharField شده.
نتیجه؟ فرم به جای یک فیلد فرم معمولی، داره یه فیلد مدل استفاده میکنه! 🤯
نسخه صحیح
🔐 اینطوری هم کد خواناتر و ایمنتره، هم هیچ نامی روی دیگری تاثیر نمیذاره
شما چه مشکلات دیگه ای در مورد استفاده از import * سراغ دارید؟ کامنت بذارید 😁
#python
🆔 @CodeBazDev
import *
به چند دلیل بده!
یکی از این دلایل تصادف نامها یا Name Collisions نام داره.
فرض کن در یک فایل جنگو میخوای هم از فرمها استفاده کنی، هم از مدلها
# ANTI-PATTERN ❌
from django.forms import *
from django.db.models import *
class MyForm(Form):
name = CharField()
💥 الان مشکل چیه؟
هم django.forms و هم django.db.models کلاسی به اسم CharField دارن!
چون تو import * کردی، آخرین CharField که وارد شده (models.CharField) جایگزین forms.CharField شده.
نتیجه؟ فرم به جای یک فیلد فرم معمولی، داره یه فیلد مدل استفاده میکنه! 🤯
نسخه صحیح
from django import forms
from django.db import models
class MyForm(forms.Form):
name = forms.CharField()
🔐 اینطوری هم کد خواناتر و ایمنتره، هم هیچ نامی روی دیگری تاثیر نمیذاره
شما چه مشکلات دیگه ای در مورد استفاده از import * سراغ دارید؟ کامنت بذارید 😁
#python
🆔 @CodeBazDev
👍7