آموزش پایتون - پکیج‌ها

در پایتون، ماژول یک اسکریپت پایتون با پسوند .py است و شامل اشیائی مانند کلاس‌ها، توابع و غیره می‌باشد. پکیج‌ها در پایتون مفهوم رویکرد ماژولار را فراتر می‌برند. پکیج پوشه‌ای است که شامل یک یا چند فایل ماژول است؛ علاوه بر این، یک فایل ویژه به نام "__init__.py" می‌تواند خالی باشد یا شامل لیست پکیج باشد.

ساخت یک پکیج پایتون

اجازه دهید یک پکیج پایتون با نام mypackage بسازیم. مراحل زیر را دنبال کنید −

  • یک پوشه بیرونی برای نگهداری محتویات mypackage ایجاد کنید. فرض کنید نام آن packagedemo باشد.
  • در داخل آن، پوشه دیگری به نام mypackage بسازید. این همان پکیج پایتون خواهد بود که قصد داریم بسازیم. دو ماژول پایتون به نام‌های areafunctions.py و mathfunctions.py در داخل mypackage ساخته خواهند شد.
  • یک فایل خالی "__.init__.py" در داخل پوشه mypackage ایجاد کنید.
  • در داخل پوشه بیرونی، بعداً یک اسکریپت پایتون به نام example.py ذخیره می‌کنیم تا پکیج خود را تست کنیم.

ساختار فایل/پوشه باید به صورت زیر باشد −

folder_structure

با استفاده از ویرایشگر کد دلخواه خود، دو ماژول پایتون زیر را در پوشه mypackage ذخیره کنید.

مثالی برای ساخت یک پکیج پایتون

# mathfunctions.py
def sum(x,y):
   val = x+y
   return val
   
def average(x,y):
   val = (x+y)/2
   return val

def power(x,y):
   val = x**y
   return val

یک اسکریپت پایتون دیگر بسازید −

# areafunctions.py
def rectangle(w,h):
   area = w*h
   return area
   
def circle(r):
   import math
   area = math.pi*math.pow(r,2)
   return area

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

#example.py
from mypackage.areafunctions import rectangle
print ("Area :", rectangle(10,20))

from mypackage.mathsfunctions import average
print ("average:", average(10,20))

این برنامه توابع را از mypackage وارد (import) می‌کند. اگر اسکریپت بالا اجرا شود، باید خروجی زیر را دریافت کنید −

Area : 200
average: 15.0

تعریف لیست پکیج

شما می‌توانید توابع منتخب یا هر منبع دیگری از پکیج را در فایل "__init__.py" قرار دهید. اجازه دهید کد زیر را در آن قرار دهیم.

from .areafunctions import circle
from .mathsfunctions import sum, power

برای وارد کردن توابع در دسترس از این پکیج، اسکریپت زیر را با نام testpackage.py مانند قبل، در یک سطح بالاتر از پوشه پکیج ذخیره کنید.

مثالی برای تعریف لیست پکیج

#testpackage.py
from mypackage import power, circle

print ("Area of circle:", circle(5))
print ("10 raised to 2:", power(10,2))

این کد خروجی زیر را تولید خواهد کرد −

Area of circle: 78.53981633974483
10 raised to 2: 100

نصب پکیج

در حال حاضر، ما می‌توانیم از طریق اسکریپتی که دقیقاً یک سطح بالاتر از پوشه پکیج قرار دارد، به منابع پکیج دسترسی داشته باشیم. برای اینکه بتوانید از پکیج در هر جای سیستم‌عامل استفاده کنید، باید آن را با استفاده از ابزار PIP نصب کنید.

قبل از هر چیز، اسکریپت زیر را در پوشه اصلی (والد) و در هم‌سطح پوشه پکیج ذخیره کنید.

#setup.py
from setuptools import setup
setup(name='mypackage',
version='0.1',
description='Package setup script',
url='#',
author='anonymous',
author_email='test@gmail.com',
license='MIT',
packages=['mypackage'],
zip_safe=False)

ابزار PIP را از خط فرمان اجرا کنید، در حالی که در همان پوشه اصلی قرار دارید.

C:\Users\user\packagedemo>pip3 install .
Processing c:\users\user\packagedemo
 Preparing metadata (setup.py) ... done
Installing collected packages: mypackage
 Running setup.py install for mypackage ... done
Successfully installed mypackage-0.1

اکنون باید بتوانید محتویات پکیج را در هر محیطی وارد (import) کنید.

C:\Users>python
Python 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mypackage
>>> mypackage.circle(5)
78.53981633974483

پیشرفت مطالعه: وضعیت خوانده‌شدن این درس فقط در همین مرورگر ذخیره می‌شود؛ بدون نیاز به حساب کاربری.