Các loại gói trong python

Gói là cấu trúc thư mục tệp phân cấp xác định một môi trường ứng dụng Python duy nhất bao gồm các mô-đun và gói con và gói con phụ, v.v.

Xem xét một tệp Pos. py có sẵn trong danh bạ Điện thoại. Tệp này có dòng mã nguồn sau -

#!/usr/bin/python
def Pots():
print "I'm Pots Phone"

Tương tự như vậy, chúng ta có hai tệp khác có các chức năng khác nhau có cùng tên như trên -

  • Điện thoại/Isdn. tệp py có chức năng Isdn()
  • Điện thoại/G3. tệp py có chức năng G3()

Bây giờ, hãy tạo thêm một tệp __init__. py trong thư mục Điện thoại -

Để cung cấp tất cả các chức năng của bạn khi bạn đã nhập Điện thoại, bạn cần đặt câu lệnh nhập rõ ràng vào __init__. py như sau -

from Pots import Pots
from Isdn import Isdn
from G3 import G3

Sau khi bạn thêm những dòng này vào __init__. py, bạn có sẵn tất cả các lớp này khi nhập gói Điện thoại

#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()

Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -

I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone

Trong ví dụ trên, chúng tôi đã lấy ví dụ về một chức năng duy nhất trong mỗi tệp, nhưng bạn có thể giữ nhiều chức năng trong tệp của mình. Bạn cũng có thể định nghĩa các lớp Python khác nhau trong các tệp đó và sau đó bạn có thể tạo các gói của mình từ các lớp đó

File: types-example-1.py

import types

def check(object):
    print object,

    if type(object) is types.IntType:
        print "INTEGER",
    if type(object) is types.FloatType:
        print "FLOAT",
    if type(object) is types.StringType:
        print "STRING",
    if type(object) is types.ClassType:
        print "CLASS",
    if type(object) is types.InstanceType:
        print "INSTANCE",
    print

check(0)
check(0.0)
check("0")

class A:
    pass

class B:
    pass

check(A)
check(B)

a = A()
b = B()

check(a)
check(b)

0 INTEGER
0.0 FLOAT
0 STRING
A CLASS
B CLASS
 INSTANCE
 INSTANCE

Chúng tôi tổ chức một số lượng lớn 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 dễ dàng. Theo cách tương tự, một gói trong Python đưa khái niệm về cách tiếp cận mô-đun lên cấp độ 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ư lớp, hàm, 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
    from Pots import Pots
    from Isdn import Isdn
    from G3 import G3
    9
  • Bên trong
    #!/usr/bin/python
    # Now import your Phone Package.
    import Phone
    Phone.Pots()
    Phone.Isdn()
    Phone.G3()
    0, tạo thư mục con có tên 'mypackage'
  • Tạo một tệp
    #!/usr/bin/python
    # Now import your Phone Package.
    import Phone
    Phone.Pots()
    Phone.Isdn()
    Phone.G3()
    1 trống trong thư mục mypackage
  • Sử dụng trình chỉnh sửa nhận biết Python như IDLE, tạo mô-đun chào. py và chức năng. py với đoạn mã sau

chào hỏi. py

Sao chép

def SayHello(name):
    print("Hello ", name)

chức năng. py

Sao chép

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ó tên mypackage. Sau đây là cấu trúc thư mục

Các loại gói trong python
Cấu trúc thư mục gói

Nhập Mô-đun từ Gói

Bây giờ, để kiểm tra gói của chúng tôi, hãy điều hướng dấu nhắc lệnh đến thư mục

#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()
0 và gọi dấu nhắc Python từ đó

D. \MyApp>trăn

Nhập mô-đun chức năng từ gói mypackage và gọi hàm power() của nó

>>> từ chức năng nhập mypackage
>>> chức năng. sức mạnh(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ừ gói của tôi. hàm nhập sum
>>> sum(10,20)
30
>>> trung bình(10,12)< .
Traceback (most recent call last):
Tệp "
NameError. tên 'trung bình' không được xác định

__trong đó__. py

Thư mục gói chứa một tệp đặc biệt có tên là

#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()
1, lưu trữ nội dung của gói. Nó phục vụ hai mục đích

  1. 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
    #!/usr/bin/python
    # Now import your Phone Package.
    import Phone
    Phone.Pots()
    Phone.Isdn()
    Phone.G3()
    1
  2. #!/usr/bin/python
    # Now import your Phone Package.
    import Phone
    Phone.Pots()
    Phone.Isdn()
    Phone.G3()
    1 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

#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()
1 trống sẽ cung cấp tất cả các chức năng từ các mô-đun trên khi gói này được nhập. Lưu ý rằng
#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()
1 là điều cần thiết để thư mục được Python nhận dạng dưới dạng 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

Ghi chú

Chúng tôi cũng sẽ tạo một tập lệnh Python khác trong thư mục

#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()
0 và nhập gói mypackage trong đó. Nó phải ở cùng cấp độ của gói được nhập

Tệp

#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()
1 thường được để 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
#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()
1 như bên dưới

__trong đó__. py

Sao chép

from .functions import average, power
from .greet import SayHello

Giờ đây, các chức năng được chỉ định có thể được nhập trong phiên thông 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
#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()
0 để kiểm tra mypackage

kiểm tra. py

Sao chép

from mypackage import power, average, SayHello
SayHello()
x=power(3,2)
print("power(3,2) : ", x)

Lưu ý rằng các hàm

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ư đã thực hiện trước đó. Đầu ra của đoạn script trên là

D. \MyApp>kiểm tra trăn. py
Xin chào thế giới
power(3,2). 9

Cài đặ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 trên 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 trên toàn hệ thống bằng cách chạy tập lệnh thiết lập

Lưu đoạn mã sau dưới dạng thiết lập. py trong thư mục mẹ

#!/usr/bin/python
# Now import your Phone Package.
import Phone
Phone.Pots()
Phone.Isdn()
Phone.G3()
0. 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 nhận nhiều đối số khác nhau như tên, phiên bản, tác giả, danh sách phụ thuộc, v.v. Đối số
from .functions import average, power
from .greet import SayHello
6 xác định xem gói được cài đặt ở chế độ nén hay chế độ thông thường

Thí dụ. thành lập. py

Sao chép

from Pots import Pots
from Isdn import Isdn
from G3 import G3
7

Bây giờ hãy 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 mẹ, trong trường hợp này là
from Pots import Pots
from Isdn import Isdn
from G3 import G3
9

D. \MyApp>pip install mypackage
Đang xử lý d. \MyApp
Cài đặt các gói đã thu thập. mypack
Chạy thiết lập. py cài đặt cho mypack. xong
Đã cài đặt thành công mypackage-0. 1

Bây giờ mypackage có sẵn để sử dụng trên toàn hệ thống và có thể được nhập vào bất kỳ tập lệnh hoặc trình thông dịch nào

D. \>python
>>> nhập mypackage
>>>mypackage. trung bình(10,20)
15. 0
>>>gói của tôi. công suất(10,2)
100

Bạn cũng có thể muốn xuất bản gói để sử dụng công khai. PyPI (viết tắt của Python Package Index) là kho lưu trữ các gói Python. Truy cập https. // bao bì. con trăn. org/distributing để biết thêm về quy trình tải gói lên PyPI

Các gói trong Python với ví dụ là gì?

Gói python là tập hợp các mô-đun . Các mô-đun có liên quan với nhau chủ yếu được đặt trong cùng một gói. Khi một mô-đun từ một gói bên ngoài được yêu cầu trong một chương trình, gói đó có thể được nhập và các mô-đun của nó có thể được đưa vào sử dụng. Bất kỳ tệp Python nào, có tên là thuộc tính tên của mô-đun mà không có.

Các gói được gọi bằng Python là gì?

Một gói về cơ bản là một thư mục chứa các tệp Python và một tệp có tên __init__. py . Điều này có nghĩa là mọi thư mục bên trong đường dẫn Python chứa tệp có tên __init__. py, sẽ được Python coi là một gói.

Gói Python nào là tốt nhất?

10 thư viện Python hàng đầu cho khoa học dữ liệu .
TenorFlow
NumPy
khoa học viễn tưởng
gấu trúc
Matplotlib
máy ảnh
SciKit-Tìm hiểu
PyTorch

Các gói Python được sử dụng nhiều nhất là gì?

10 thư viện Python hàng đầu. .
TenorFlow
Scikit-Tìm hiểu
Nặng nề
máy ảnh
PyTorch
ánh sángGBM
khoa học viễn tưởng