Python PIP – Quản lý các Package trong Python – Phan Nhật Chánh

Trong phần này, chúng ta sẽ tìm hiểu xem pip là gì? Cách sử dụng và cài đặt pip như thế nào cũng như cách bạn tạo ra một gói package cơ bản như thế nào và tìm hiểu thêm một số thư viện được sử dụng phổ biến trong python.

PIP là viết tắt của cụm từ Preferred Installer Program một trình quản lý các gói (package) nó là một module trong python có thể chứa một hoặc nhiều các module khác hoặc các package khác. Module hoặc các module mà bạn cài đặt vào ứng dụng của bạn được gọi là một package. Trong lập trình, chúng ta không thể nào viết mọi chương trình tiện ích để sử dụng, thay vào đó chúng ta có thể cài đặt các package và import chúng vào ứng dụng của mình. Để cài đặt các package bạn sẽ sử dụng pip.

Nếu bạn chưa cài đặt pip, hãy cài đặt nó bằng cách mở terminal hoặc command prompt trên máy tính của bạn và chạy lệnh pip install pip

Kiểm tra xem pip đã được cài đặt chưa bằng cách viết pip --version

pip --version

pip 20.2.3 from d:

\p

ython

\l

ib

\s

ite-packages

\p

ip (python 3.8)

Như bạn có thể thấy, tôi đang sử dụng phiên bản pip 20.2.3, nếu bạn thấy một số con số nhỏ hơn hoặc cao hơn một chút, có nghĩa là máy tính của bạn cũng đã cài đặt pip thành công.

Có rất nhiều các package có sẵn được sử dụng phổ biến trong cộng đồng python cho các mục đích khác nhau, dưới đây là một số package phổ biến nhất bạn có thể cài đặt và thử sử dụng chúng.

Hãy thử cài đặt numpy (được gọi là numeric python). Nó là một trong những package phổ biến nhất trong cộng đồng machine learning (học máy) và data science (khoa học dữ liệu).

Numpy là một thư viện toán học phổ biến và mạnh mẽ của Python. Để cài đặt numpy bạn chạy lệnh pip install numpy

Hãy bắt đầu sử dụng numpy. Bạn có thể sử dụng terminal, google colab hoặc cài đặt jupyter notebook để thử chạy một ví dụ đơn giản sử dụng numpy như sau:

$ python

Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:43:08) [MSC v.1926 32 bit (In

tel)] on win32

Type

"help"

,

"copyright"

,

"credits"

or

"license"

for

more information.

>>> import numpy

>>> numpy.version.version

'1.19.2'

>>> lst = [1, 2, 3,4, 5]

>>> np_arr = numpy.array(lst)

>>> np_arr

array([1, 2, 3, 4, 5])

>>> len(np_arr)

5

>>> np_arr * 2

array([ 2, 4, 6, 8, 10])

>>> np_arr + 2

array([3, 4, 5, 6, 7])

>>>

import

numpy

numpy.version.version

lst

=

[

1

,

2

,

3

,

4

,

5

]

np_arr

=

numpy.

array

(lst)

np_arr

print

(

len

(np_arr))

# 5

print

(np_arr

*

2

)

# [ 2 4 6 8 10]

print

(np_arr

+

2

)

# [3 4 5 6 7]

Pandas là một thư viện mã nguồn mở, dễ sử dụng và các công cụ phân tích dữ liệu cho ngôn ngữ lập trình Python. Bạn có thể tham khảo bài viết sử dụng Pandas cơ bản mà tôi đã trình bày tại đây để cài đặt và sử dụng.

Trong bài này chúng ta không đi sâu vào thư viện Numpy hay Pandas, ở đây chúng ta chỉ đề cập đến cách cài đặt các gói package và nạp chúng. Nếu cần, ta sẽ nói về các gói khác nhau trong các phần khác.

Hãy import một module có tên webbrowser, module này có thể giúp bạn mở bất kỳ trang web nào. Nếu bạn đang sử dụng python3 thì đây là module được cài đặt sẵn. Ví dụ: nếu bạn muốn mở bất kỳ một hay nhiều trang web nào đó hoặc nếu bạn muốn lên lịch trình gì đó, module này có thể giúp bạn. Xem tài liệu về webbrowser.

import

webbrowser

# import thư viện

# danh sách các url

url_lists

=

[

'http://www.python.org'

,

'https://phannhatchanh.com'

,

'https://google.com'

,

]

# mở danh sách các trang web ở trên trong tab khác

for

url

in

url_lists:

webbrowser.

open_new_tab

(url)

Bạn đã được làm quen với cách đọc, ghi dữ liệu trong file trên máy tính cục bộ local. Đôi khi, chúng tôi muốn đọc dữ liệu từ một trang web sử dụng url hoặc API (Application Program Interface). Nó là một thư viện để trao đổi dữ liệu có cấu trúc giữa các máy chủ chủ yếu dưới dạng dữ liệu json. Để kết nối với các url, chúng ta cần một package có tên requests – nó cho phép mở và kết nối để thực hiện các hoạt động CRUD như (tạo, đọc, cập nhật và xóa). Trong phần này, chúng ta chỉ đề cập đến việc đọc dữ liệu.

Chúng ta sẽ sử dụng các phương thức get, status_code, headers, text và json trong module requests:

  • get()

    kết nối, tìm và nạp dữ liệu từ url – nó trả về một object.

  • status_code: Sau khi tìm nạp dữ liệu, ta có thể kiểm tra trạng thái của hoạt động (succes, error,…)
  • headers: thông tin header headers={"content-type":"text"}
  • text: Trích xuất văn bản từ object được trả về.
  • json: Trích xuất dữ liệu json.

Hãy đọc một file có phần mở rộng .txt ở trang web này: https://www.w3.org/TR/PNG/iso_8859-1.txt.

import

requests

# import request module

url

=

'https://www.w3.org/TR/PNG/iso_8859-1.txt'

# text từ một trang web

response

=

requests.

get

(url)

# mở mạng và tìm nạp dữ liệu

print

(response)

print

(response.status_code)

# trạng thái, success:200

print

(response.headers)

# thônh tin headers

print

(response.text)

# trả về tất cả văn bản

API là phương thức, giao thức dùng để trao đổi dữ liệu có cấu trúc giữa các máy chủ chủ yếu là dữ liệu dạng json. Ví dụ về api: https://restcountries.eu/rest/v2/all. Hãy đọc API này bằng cách sử dụng requests module.

import

requests

url

=

'https://restcountries.eu/rest/v2/all'

response

=

requests.

get

(url)

print

(response)

print

(response.status_code)

# trạng thái, success:200

countries

=

response.

json

()

# trả về dạng json

print

(countries[:

1

])

# chỉ lấy những nước đầu tiên

Nếu bạn không muốn giữ lại các gói package đã được cài đặt, bạn có thể gỡ bỏ chúng bằng cách pip uninstall packagename.

Để xem các gói package đã được cài đặt trên máy tính của bạn. Bạn có thể theo dõi các gói đã cài bằng cách pip list

Câu lệnh pip show packagename sẽ hiển thị thông tin về một gói package mà bạn muốn.

$ pip show pandas

Name: pandas

Version: 1.1.2

Summary: Powerful data structures

for

data analysis,

time

series, and statistics

Home-page: https://pandas.pydata.org

Author: None

Author-email: None

License: BSD

Location: d:

\p

ython

\l

ib

\s

ite-packages

Requires: python-dateutil, numpy, pytz

Required-by:

Nếu bạn muốn hiển thị thông tin của một package chi tiết hơn, chỉ cần thêm --verbose

$ pip show --verbose pandas

Name: pandas

Version: 1.1.2

Summary: Powerful data structures

for

data analysis,

time

series, and statistics

Home-page: https://pandas.pydata.org

Author: None

Author-email: None

License: BSD

Location: d:

\p

ython

\l

ib

\s

ite-packages

Requires: pytz, python-dateutil, numpy

Required-by:

Metadata-Version: 2.1

Installer: pip

Classifiers:

Development Status :: 5 - Production/Stable

Environment :: Console

Operating System :: OS Independent

Intended Audience :: Science/Research

Programming Language :: Python

Programming Language :: Python :: 3

Programming Language :: Python :: 3.6

Programming Language :: Python :: 3.7

Programming Language :: Python :: 3.8

Programming Language :: Cython

Topic :: Scientific/Engineering

Entry-points:

[pandas_plotting_backends]

matplotlib = pandas:plotting._matplotlib

Hiển thị các package đã được sử dụng trong dự án của bạn. Tham khảo thêm bài viết Thiết lập môi trường ảo Virtual Environment trong Python.

pip freeze

docutils==0.11

Jinja2==2.7.2

MarkupSafe==0.19

Pygments==1.6

Sphinx==1.2.2

Như bạn đã biết, một module có thể chứa nhiều đối tượng, chẳng hạn như các lớp, hàm,… Một package có thể chứa một hoặc nhiều module liên quan. Nó thực sự là một thư mục chứa một hoặc nhiều file nhỏ. Bây giờ, thử tạo một package có tên là mypackage bằng cách thực hiện theo các bước sau:

Đầu tiên, hãy tạo một thư mục mới có tên mypacakge bên trong thư mục dự án của bạn. Tiếp theo, tạo một file có tên __init__.py trống trong thư mục mypackage. Kế đến, tạo 2 file có tên là arithmetic.pywelcome.py bằng đoạn code sau:

# mypackage/arithmetics.py

# arithmetics.py

def

add_numbers

(*

args

):

total

=

0

for

num

in

args:

total

+=

num

return

total

def

subtract

(

a

,

b

):

return

(a

-

b)

def

multiple

(

a

,

b

):

return

a

*

b

def

division

(

a

,

b

):

return

a

/

b

def

remainder

(

a

,

b

):

return

a

%

b

def

power

(

a

,

b

):

return

a

**

b

# mypackage/greet.py

# greet.py

def

greet_person

(

firstname

,

lastname

):

return

f

'

{

firstname

}

{

lastname

}

, welcome to PythonClassic Challenge!'

Cấu trúc thư mục gói package của bạn sẽ giống như sau:

Package Folder

mypackage

__init__.py

arithmetic.py

greet.py

Như vậy là bạn đã vừa tạo package đơn giản bằng ngôn ngữ python (tham khảo thêm cách sử dụng function trong python). Bây giờ, hãy mở terminal và thử sử dụng nó:

$ python

Python 3.7.5 (default, Nov 1 2019, 02:16:32)

[Clang 11.0.0 (clang-1100.0.33.8)] on darwin

Type

"help"

,

"copyright"

,

"credits"

or

"license"

for

more information.

>>> from mypackage import arithmetics

>>> arithmetics.add_numbers(1,2,3,5)

11

>>> arithmetics.subtract(5, 3)

2

>>> arithmetics.multiple(5, 3)

15

>>> arithmetics.division(5, 3)

1.6666666666666667

>>> arithmetics.remainder(5, 3)

2

>>> arithmetics.power(5, 3)

125

>>> from mypackage import greet

>>> greet.greet_person(

'Chanh'

,

'Phan Nhat'

)

'Chanh Phan Nhat, welcome to PythonBassic Challenge!'

>>>

Như bạn có thể thấy package của chúng ta hoạt động hoàn hảo. Thư mục của package chứa một file đặc biệt có tên là __init__.py – file này có nhiệm vụ sẽ lưu trữ nội dung của package. Nếu chúng ta đặt __init__.py trong thư mục package, python bắt đầu nhận ra nó là một gói. __init__.py hiển thị các tài nguyên được chỉ định từ các module của nó để được import vào các file python khác. Tóm lại để tạo một package là cần phải có tệp __init__.py để nó nhận dạng thư mục chứa nó là một package.

Dưới đây là một số package mà bạn cũng nên tìm hiểu trên con đường học tập ngôn ngữ python của chính mình

  • Database
    • SQLAlchemy (

      pip install SQLAlchemy

      ): cung cấp cho các nhà phát triển ứng dụng toàn bộ sức mạnh và tính linh hoạt của SQL.

    • SQLObject: là một ORM (Object Relational Manager) phổ biến cung cấp giao diện đối tượng cho cơ sở dữ liệu của bạn.
  • Web Development
    • Django (

      pip install django

      ): thư viện tạo trang web chuyên nghiệp (pip install django)

    • Flask (

      pip install flask

      ): một thư viện tạo trang web bằng Python dựa trên Werkzeug, Jinja 2. (

      pip install flask

      )

  • HTML Parser
    • Beautiful Soup (

      pip install beautifulsoup4

      ): phân tích cú pháp HTML / XML được thiết kế cho các dự án screen-scraping.

    • PyQuery – triển khai jQuery bằng Python; rõ ràng là nhanh hơn BeautifulSoup.
  • XML Processing
    • ElementTree là một API được sử dụng để làm việc với các file XML một cách dễ dàng. (Python 2.5 trở lên có ElementTree trong Thư viện chuẩn)
  • GUI (Giao diện người dùng)
    • PyQt: một trong những thư viện GUI đa nền tảng mạnh mẽ và phổ biến nhất.
    • tkinter: bộ công cụ tạoo giao diện người dùng truyền thống.
  • Data Analysis, Data Science và Machine learning
    • Numpy: được biết đến là một trong những thư viện machine learning phổ biến nhất trong Python.
    • Pandas: là một thư viện cung cấp các cấu trúc dữ liệu cấp cao và tích hợp nhiều công cụ để phân tích dữ liệu trong python.
    • SciPy: chứa các module dùng để tối ưu hóa, đại số tuyến tính, tích hợp, xử lý hình ảnh và thống kê.
    • Scikit-Learn: được coi là một trong những thư viện tốt nhất để làm việc với dữ liệu phức tạp.
    • TensorFlow: là một thư viện machine learning do Google xây dựng.
    • Keras: được coi là một trong những thư viện machine learning thú vị nhất trong Python. Nó cung cấp một cơ chế dễ dàng hơn để thể hiện mạng nơ-ron. Keras cũng cung cấp một số tiện ích tốt nhất để biên dịch mô hình, xử lý tập dữ liệu, trực quan hóa đồ thị và nhiều hơn thế nữa.
  • Network
    • requests (

      pip install requests

      ): là một package mà chúng ta có thể sử dụng để gửi yêu cầu đến máy chủ (GET, POST, DELETE, PUT)

  • Others
    • word2number là một mô-đun Python dùng để chuyển đổi các từ số (ví dụ: twenty one thành số 21). Nó hoạt động cho các số dương lên đến 999.999.999.999
  1. Đọc url Romeo_and_juliet = ‘http://www.gutenberg.org/files/1112/1112.txt’ và tìm 10 từ thường gặp nhất.
  2. Đọc api cats_api = ‘https://api.thecatapi.com/v1/breeds’ và tìm trọng lượng trung bình của một con mèo theo đơn vị (mét).
  3. Đọc api countries = ‘https://restcountries.eu/rest/v2/all’ và tìm 5 quốc gia cuối cùng.
  4. UCI (Đại học California Irvine Mỹ) là một trong những nơi phổ biến nhất để lấy bộ dữ liệu cho data science và machine learning. Hãy sử dụng BeautifulSoup4 để lấy dữ liệu từ url http://archive.ics.uci.edu/ml/datasets.php.