Python - Packages

Trong Python , mô-đun là một tập tin Python có đuôi .py và chứa các đối tượng như lớp, functions , v.v. Packages in Python mở rộng khái niệm về cách tiếp cận mô-đun xa hơn. Gói là một thư mục chứa một hoặc nhiều tập tin mô-đun; ngoài ra, một tập tin đặc biệt "__init__.py" có thể trống nhưng có thể chứa danh sách gói.

Create a Python Package

Hãy tạo một Python package với tên mypackage . Làm theo các bước dưới đây −

  • Create an outer folder to hold the contents of mypackage. Let its name be packagedemo .
  • Inside it, create another folder mypackage . This will be the Python package we are going to construct. Two Python modules areafunctions.py and mathfunctions.py will be created inside mypackage .
  • Create an empty "__.init__.py" file inside mypackage folder.
  • Inside the outer folder, we shall later store a Python script example.py to test our package.

file/folder structure nên được hiển thị như bên dưới −

folder_structure

Sử dụng trình biên tập mã yêu thích của bạn, hãy lưu hai Python modules sau vào thư mục mypackage .

Example to Create a Python Package

# 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

Tạo một script Python khác −

# 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

Bây giờ hãy kiểm tra gói myexample với sự trợ giúp của một kịch bản Python nằm trên thư mục gói này. Tham khảo cấu trúc thư mục ở trên.

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

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

Chương trình này nhập các hàm từ mypackage . Nếu kịch bản trên được thực thi, bạn sẽ nhận được output

Area : 200
average: 15.0

Define Package List

Bạn có thể đặt các hàm đã chọn hoặc bất kỳ tài nguyên nào khác từ gói vào tệp "__init__.py". Hãy để chúng ta đặt đoạn mã sau vào đó.

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

Để nhập các hàm có sẵn từ gói này, hãy lưu đoạn mã sau dưới dạng testpackage.py, ở trên thư mục gói như trước.

Example to Define a Package List

#testpackage.py
from mypackage import power, circle

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

Nó sẽ tạo ra output

Area of circle: 78.53981633974483
10 raised to 2: 100

Package Installation

Hiện tại, chúng ta có thể truy cập tài nguyên gói từ một script ngay trên thư mục gói. Để có thể sử dụng gói ở bất kỳ đâu trong hệ thống tệp, bạn cần cài đặt nó bằng cách sử dụng tiện ích PIP.

Trước hết, hãy lưu kịch bản sau vào thư mục cha, ở cấp độ thư mục gói.

#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)

Chạy tiện ích PIP từ dòng lệnh, trong khi vẫn ở trong thư mục cha.

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

Bạn bây giờ có thể nhập nội dung của package trong bất kỳ môi trường nào.

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