Chúng tôi tổ chức một số lượng lớn các tệp trong các thư mục và thư mục con khác nhau dựa trên một số tiêu chí, để chúng tôi có thể tìm và quản lý chúng một cách dễ dàng. Theo cách tương tự, một gói trong Python lấy khái niệm về cách tiếp cận mô -đun đến mức logic tiếp theo. Như bạn đã biết, một mô -đun có thể chứa nhiều đối tượng, chẳng hạn như các lớp, chức năng, v.v. Một gói có thể chứa một hoặc nhiều mô -đun có liên quan. Về mặt vật lý, một gói thực sự là một thư mục chứa một hoặc nhiều tệp mô -đun.
Hãy tạo một gói có tên MyPackage, sử dụng các bước sau:
- Tạo một thư mục mới có tên
D:\MyApp
. - Bên trong
MyApp
, tạo một thư mục con với tên 'MyPackage'. - Tạo một tệp
__init__.py
trống trong thư mục MyPackage. - Sử dụng trình soạn thảo nhận biết Python như IDLE, hãy tạo các mô-đun chào hỏi và chức năng.py với mã sau:
def SayHello[name]:
print["Hello ", name]
def sum[x,y]:
return x+y
def average[x,y]:
return [x+y]/2
def power[x,y]:
return x**y
Đó là nó. Chúng tôi đã tạo gói của chúng tôi được gọi là MyPackage. Sau đây là cấu trúc thư mục:
Nhập một mô -đun từ một gói
Bây giờ, để kiểm tra gói của chúng tôi, điều hướng dấu nhắc lệnh đến thư mục MyApp
và gọi dấu nhắc Python từ đó.
Nhập mô -đun chức năng từ gói MyPackage và gọi hàm Power [] của nó.
>>> Từ các chức năng nhập mypackage >>> Các chức năng.Power [3,2] 9>>> functions.power[3,2]
9
Cũng có thể nhập các chức năng cụ thể từ một mô -đun trong gói.
>>> Từ mypackage. không được xác định>>> sum[10,20]
30
>>> average[10,12]
Traceback [most recent call last]:
File "", line 1, in
NameError: name 'average' is not defined
__init__.py
Thư mục gói chứa một tệp đặc biệt có tên __init__.py
, lưu trữ nội dung của gói. Nó phục vụ hai mục đích:
- Trình thông dịch Python nhận ra một thư mục là gói nếu nó chứa tệp
__init__.py
. __init__.py
hiển thị các tài nguyên được chỉ định từ các mô -đun của nó sẽ được nhập.
Một tệp __init__.py
trống làm cho tất cả các chức năng từ các mô -đun trên có sẵn khi gói này được nhập. Lưu ý rằng __init__.py
là điều cần thiết để thư mục được Python nhận ra là một gói. Bạn có thể tùy chọn xác định các chức năng từ các mô -đun riêng lẻ sẽ được cung cấp.
Chúng tôi cũng sẽ tạo một tập lệnh Python khác trong thư mục MyApp
và nhập gói MyPackage trong đó. Nó nên ở cùng cấp của gói được nhập.
Tệp __init__.py
thường được giữ trống. Tuy nhiên, nó cũng có thể được sử dụng để chọn các chức năng cụ thể từ các mô -đun trong thư mục gói và cung cấp chúng để nhập. Sửa đổi __init__.py
như dưới đây:
from .functions import average, power
from .greet import SayHello
Các chức năng được chỉ định hiện có thể được nhập trong phiên phiên dịch hoặc tập lệnh thực thi khác.
Tạo
def sum[x,y]:
return x+y
def average[x,y]:
return [x+y]/2
def power[x,y]:
return x**y
7 trong thư mục MyApp
để kiểm tra MyPackage.from mypackage import power, average, SayHello
SayHello[]
x=power[3,2]
print["power[3,2] : ", x]
Lưu ý rằng các chức năng
def sum[x,y]:
return x+y
def average[x,y]:
return [x+y]/2
def power[x,y]:
return x**y
9 và from .functions import average, power
from .greet import SayHello
0 được nhập từ gói chứ không phải từ các mô -đun tương ứng của chúng, như được thực hiện trước đó. Đầu ra của tập lệnh trên là:Hello world
power[3,2] : 9
Cài đặt một gói trên toàn cầu
Khi một gói được tạo, nó có thể được cài đặt để sử dụng toàn hệ thống bằng cách chạy tập lệnh thiết lập. Tập lệnh gọi hàm
from .functions import average, power
from .greet import SayHello
1 từ mô -đun from .functions import average, power
from .greet import SayHello
2.Hãy cài đặt MyPackage để sử dụng toàn hệ thống bằng cách chạy tập lệnh thiết lập.
Lưu mã sau dưới dạng setup.py trong thư mục cha MyApp
. Tập lệnh gọi hàm
from .functions import average, power
from .greet import SayHello
1 từ mô -đun setuptools. Hàm from .functions import average, power
from .greet import SayHello
1 có nhiều đối số khác nhau như tên, phiên bản, tác giả, danh sách các phụ thuộc, v.v ... Đối số from .functions import average, power
from .greet import SayHello
6 có xác định xem gói được cài đặt ở chế độ nén hoặc chế độ thông thường hay không.from setuptools import setup
setup[name='mypackage',
version='0.1',
description='Testing installation of Package',
url='#',
author='auth',
author_email='[email protected]',
license='MIT',
packages=['mypackage'],
zip_safe=False]
Bây giờ thực hiện lệnh sau để cài đặt
from .functions import average, power
from .greet import SayHello
7 bằng tiện ích PIP. Đảm bảo rằng dấu nhắc lệnh nằm trong thư mục cha mẹ, trong trường hợp này là D:\MyApp
. D: \ MyApp> Pip Cài đặt xử lý MyPackage D: \ MyApp Cài đặt các gói được thu thập: MYPACK RUN RUNProcessing d:\MyApp
Installing collected packages: mypack
Running setup.py install for mypack ... done
Successfully installed mypackage-0.1
Bây giờ MyPackage có sẵn để sử dụng toàn hệ thống và có thể được nhập trong bất kỳ tập lệnh hoặc trình thông dịch nào.
D: \> Python >>> Nhập MyPackage >>> MyPackage.Verage [10,20] 15.0 >>> MyPackage.Power [10,2] 100>>> import mypackage
>>>mypackage.average[10,20]
15.0
>>>mypackage.power[10,2]
100
Bạn cũng có thể muốn xuất bản gói để sử dụng công cộng. PYPI [viết tắt của Gói Python Index] là một kho lưu trữ các gói Python. Truy cập //packaging.python.org/distributing để biết thêm về quy trình tải gói lên PYPI.