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

1 دقیقه مطالعه

مدیریت کتابخانه‌ها در پایتون

یه مشکلی که من در مورد خیلی‌ها که با پایتون کد میزنن بهش برخوردم این بوده که آدما وقتی می‌خوان یه برنامه‌ی پایتون رو که نوشتن به گیت انتقال بدن و یا یه داکر ایمج ازش بسازن، آدما یادشون میره فایل requirments.txt رو همراه برنامه قرار نمی‌دن تا زندگی خودشون رو راحت‌تر کنن. برای همین تصمیم گرفتم در قالب یه پست یه روش ایجاد این فایل رو روی Ubuntu و Debian توضیح بدم.

نصب

  • اول virtual enviroment پایتون رو با دستور زیر نصب می‌کنیم:
sudo pip3 install -U virtualenv
  • بعد از نصب virtualenv، با دستور زیر یه پوشه می‌سازیم که توش یه مفسر پایتون خشک و خالی نصب شده!
virtualenv  home/$USER/MyPython

بعد اینکار برای ترمینالی که توش هستیم با دستور زیر این مفسر رو فعال می‌کنیم. در واقع تا وقتی این تب از ترمینال رو نبستیم مفسر پایتون نصب‌‌شده توی MyPython استفاده می‌شه.

source  /home/$USER/MyPython/bin/activate 

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

برای مثال فرض کنین که برنامه‌ی خفن ما یه ماژول هستن که توش کد زیر اجرا میشه:

import numpy as np
import pylab as plt

if __name__ == "__main__":
    mu = 10
    sigma = 3
    xs = sigma * np.random.randn(1000) + mu

    plt.hist(xs, bins=50)
    plt.show()

طی اجرای برنامه‌ها با مفسر تازه نصب‌شده‌ی پایتون برای هر کتابخونه یه پیام خطا می‌گیریم که با استفاده از اون پیام خطا می‌تونیم کتابخونه‌های مورد نظر رو با استفاده از pip برای همین مفسر نصب کنیم.

بعد از نصب همه‌ی کتابخونه‌ها، دیگه برنامه‌ی ما به خوبی اجرا می‌شه. بعد از نصب کتابخونه‌ها ما اسم و ورژن کتابخونه‌های این برنامه رو توی یه فایل تکست که معمولا اسمش هست requirements.txt رو با دستور زیر ذخیره می‌کنیم.

pip freeze >> requirements.txt 

بعد از اینکار مفسر نصبشده رو غیر فعالش می‌کنیم.

deactivate 

استفاده از فایل وابستگی‌ها

هر کس اگه خواست از برنامه‌ی ما استفاده کنه به راحتی می‌تونه وابستگی‌های برنامه رو با داشتن فایل requirements.txt با

sudo pip3 install -r requirements.txt

نصب کنه!

نظر خود را بنویسید

ایمیل شما منتشر نخواهد شد. فیلد های الزامی *

در حال بارگذاری...