برنامه نویسی

مدیریت پویا وابستگی ها در پروژه های پایتون

در چشم‌انداز توسعه نرم‌افزار امروزی، به دلیل تنوع محیط‌هایی که برنامه‌نویسان برای ساخت پروژه‌های خود استفاده می‌کنند، اطمینان از استقرار موفقیت‌آمیز پروژه می‌تواند چالش برانگیز باشد. هر محیط چالش های منحصر به فردی را برای استقرار پروژه از ویندوز به ArchLinux، Mac به Ubuntu ارائه می دهد.

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

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

پیش نیازها

تنها با داشتن درک اولیه از Python و Git، هر توسعه‌دهنده‌ای می‌تواند روش‌های ذکر شده در این آموزش را برای بهبود موفقیت در استقرار پروژه خود دنبال کند.
تنها شرط لازم برای نصب این آموزش پایتون است. برای نصب پایتون، به صفحه دانلودهای رسمی آنها مراجعه کنید.

مشکل چیه؟

هنگام استفاده از پایگاه داده Postgres با جنگو، آداپتور پایگاه داده psycopg2 برای این کار وابستگی لازم است. اما یک مشکل وجود دارد، psycopg2 با موفقیت در محیط ویندوز نصب می شود اما در محیط لینوکس نصب نمی شود، به جای آن باید psycopg2-binary را نصب کنید.

خوب، اگر محیط توسعه و استقرار شما مشابه باشد یا از Docker استفاده کنید، با این وضعیت مشکلی نخواهید داشت. مشکل زمانی رخ می‌دهد که محیط‌های متفاوتی دارید یا چندین همکار روی پروژه با شما کار می‌کنند. شما نمی خواهید آنها فایل requires.txt را ویرایش کنند تا باعث تداخل git نشود.

چگونه می توان این مشکل را حل کرد؟

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

سینتکس الزامات پیپ شرطی

فرض کنید وابستگی های فهرست شده در فایل requires.txt شما به شرح زیر است:

requests==2.26.0
six==1.16.0
urllib3==1.26.7
psycopg2==2.9.6
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

requests==2.26.0
six==1.16.0
urllib3==1.26.7
psycopg2-binary==2.9.3; sys_platform == "linux"
psycopg2==2.9.6; sys_platform == "win32"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

همچنین می توانید وابستگی هایی را که قرار است نصب شوند بر اساس نسخه پایتون نصب شده روی محیط برنامه ریزی کنید.

requests==2.26.0; python_version > '3.0'
requests==2.26.0; python_version == '2.6'
six==1.16.0
urllib3==1.26.7
psycopg2-binary==2.9.3; sys_platform == "linux"
psycopg2==2.9.6; sys_platform == "win32"
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

آنها در PEP 508 و PEP 0345 (نشانگرهای محیطی) تعریف شده اند، اما به نظر می رسد نحو از پیش نویس PEP 0496 پیروی می کند.

برای دانستن تمام مقادیر ممکن برای sys_platform, از این پاسخ StackOverflow دیدن کنید.

حالا وقتی می دوی pip install -r requirements.txt، بسته به محیط شما، وابستگی و نسخه مناسب نصب خواهد شد.

این ساده ترین و توصیه شده ترین روش برای نصب پویا وابستگی ها بر اساس محیط یا نسخه پایتون است.

اسکریپت نصب پایتون

می توانید یک اسکریپت install.py برای نصب وابستگی ها بر اساس محیط یا نسخه پایتون ایجاد کنید.

  • یک فایل install.py در فهرست اصلی پروژه خود ایجاد کنید

    import pip
    
    _all_ = (
        "requests==2.26.0",
        "six==1.16.0",
        "urllib3==1.26.7",
    )  # All platforms
    
    windows = ("psycopg2==2.9.6",)  # Windows
    
    linux = ("psycopg2-binary==2.9.3",)  # Linux
    
    darwin = []  # MacOS
    
    def install(packages):
        print("Installing packages: {}".format(packages))
        for package in packages:
            pip.main(['install', package])
    
    if __name__ == '__main__':
    
        from sys import platform
    
        print("Platform: {}".format(platform))
    
        install(_all_)
    
        if platform == 'win32':
            install(windows)
        if platform.startswith('linux'):
            install(linux)
        if platform == 'darwin':
            install(darwin)
    
        print("Completed installation of packages.")
    

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

نتیجه

در نتیجه، وابستگی های متضاد محیطی می تواند دردسر بزرگی برای توسعه دهندگان نرم افزار در هنگام استقرار پروژه های خود باشد. خوشبختانه چندین راه حل از جمله Docker و نصب دینامیک وابستگی ها بر اساس محیط موجود است. در این مقاله، ما دو روش مختلف برای نصب پویا وابستگی‌های پایتون بر اساس محیط ارائه کرده‌ایم که می‌تواند به جلوگیری از تضاد و اطمینان از اجرای روان پروژه در پلتفرم‌های مختلف کمک کند. این روش ها به توسعه دهندگان اجازه می دهد تا در زمان خود صرفه جویی کنند، خطاها را کاهش دهند و روی ساختن نرم افزارهای عالی تمرکز کنند. امیدوارم این مقاله در ارائه نکات و ترفندهای مفید برای مدیریت وابستگی های محیطی در پروژه های پایتون شما مفید بوده باشد.

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا