pip install package

การใช้ pip เพื่อติดตั้งแพ็กเกจเสริมใน python

ในการใช้ภาษาไพธอน นอกจากมอดูลมาตรฐานที่มีอยู่แต่แรกแล้ว บ่อยครั้งจำเป็นต้องติดตั้งมอดูลเสริม (แพ็กเกจเสริม) เพิ่มเติมที่จำเพาะสำหรับงานที่ต้องการ วิธีการลงมอดูลใหม่นั้นมีหลายวิธีด้วยกัน แต่ที่นิยมมากที่สุดคือใช้ pip แค่เข้าคอมมานด์ไลน์แล้วพิมพ์

pip install ชื่อแพ็กเกจ

เท่านี้แพ็กเกจของมอดูลที่ต้องการก็จะถูกติดตั้งลงเครื่อง (ถ้าไม่ติดปัญหาอะไรบางอย่าง)

pip มีประโยชน์มากสำหรับคนที่เขียนไพธอน เอาไว้ใช้คลุมหัวเวลาที่อายได้ด้วย... นั่นมันปี๊บ

คิดว่าคนที่เขียนไพธอนเกือบทุกคนน่าจะรู้จัก pip กันอยู่แล้ว แต่สำหรับในบทความนี้จะมาพูดถึงในรายละเอียด

สารบัญ

  • การติดตั้ง pip

  • ลงแพ็กเกจใหม่

  • --no-cache-dir

  • เอาแพ็กเกจออก

  • โหลดเก็บไว้

  • แสดงรายการ

  • ค้นหา

  • แสดงรายละเอียด

  • ปรับข้อความที่แสดง

  • ดูเวอร์ชัน pip

  • หาข้อมูลเพิ่มเติม

  • อัปเวอร์ชันทั้งหมด

การติดตั้ง pip

pip ไม่ใช่ส่วนประกอบหนึ่งที่ติดมากับไพธอนมาตรฐาน ดังนั้นถ้าลงไพธอนจากเว็บหลัก https://www.python.org/downloads จะยังไม่มี pip อยู่ด้วย สำหรับใน mac หรือ linux ปกติจะมีไพธอนติดมาในเครื่องตั้งแต่ต้น แต่ก็มักจะไม่ได้มี pip ให้ เพียงแต่โดยปกติถ้าติดตั้งไพธอนด้วยแพ็กเกจสำเร็จรูปอย่าง anaconda หรือ canopy ก็จะมี pip ติดมาอยู่แล้วจึงไม่ต้องห่วงเรื่องการติดตั้ง ใช้งานได้เลย ที่จริงจึงแล้วค่อนข้างแนะนำให้ใช้พวกนี้มากกว่า

สำหรับคนที่ไม่ได้ลงแพ็กเกจสำเร็จรูปก็ยังมีวิธีติดตั้ง pip อีกหลายวิธี ที่จะแนะนำต่อไปนี้เป็นแค่ส่วนนึง การติดตั้งสำหรับใน windows ให้โหลด https://bootstrap.pypa.io/get-pip.py หรือถ้าลิงก์ใช้ไม่ได้แล้วก็ให้ค้นคำว่า get-pip py ใน google ก็จะเจอได้

เมื่อโหลดไฟล์มาแล้วก็เปิดคอมมานด์ไลน์ขึ้นมาแล้วไปที่โฟลเดอร์ที่โหลดไฟล์มาแล้วสั่ง

python get-pip.py

กรณีที่ลงไพธอนไว้หลายตัวในเครื่อง pip จะไปถูกติดตั้งอยู่ในไพธอนตัวไหนก็ขึ้นอยู่กับว่ารันด้วยไพธอนตัวไหน คำสั่ง python เป็นการไปรันไพธอนตัวไหนนั้นขึ้นอยู่กับตัวแปรสภาพแวดล้อม (environment variable)

สำหรับใน mac ก็ใช้วิธีเดียวกัน แต่ถ้าจะติดตั้งในไพธอนที่ติดมากับระบบอยู่แล้วจำเป็นต้องใช้ sudo

sudo python get-pip.py

เพียงแต่ไพธอนที่ติดมากับ mac นั้นมักจะมี easy_install ติดมาด้วย จึงอาจใช้ easy_install เพื่อติดตั้ง pip ได้เลย

sudo easy_install pip

สำหรับใน linux สามารถใช้คำสั่ง apt-get หรือ yum ได้

sudo apt-get install python3-pip  # สำหรับ ubuntu, debian  
sudo yum install python3-pip  # สำหรับ centOS, fedora

ติดตั้งแพ็กเกจด้วย pip install

คำสั่งพื้นฐานที่สุดของ pip ก็คือ pip install เมื่อต้องการมอดูลอะไรก็แค่พิมพ์ pip install ตามด้วยชื่อ เช่น

pip install piexif

แค่นี้ก็ติดตั้งได้สำเร็จ

Collecting piexif  
Downloading https://files.pythonhosted.org/packages/d9/45/19726eac3f8ddedccff86de92fa6d16d90b0e9257df811b7331f0b91d966/piexif-1.1.2-py2.py3-none-any.whl  
Installing collected packages: piexif  
Successfully installed piexif-1.1.2

เวลาลงถ้าแค่ใส่ชื่อแพ็กเกจแต่ไม่ได้ระบุเวอร์ชันจะได้เวอร์ชันล่าสุด แต่หากต้องการเวอร์ชันเก่ากว่านั้นก็สามารถระบุเวอร์ชันที่ต้องการได้ เช่น

pip install piexif==1.0.0

คำสั่ง pip install นั้นไม่ใช่แค่ใช้ลงมอดูลเพิ่มแต่ยังใช้อัปเวอร์ชันได้ด้วย การอัปเวอร์ชันให้ใส่ -U หรือ --upgrade นำหน้าชื่อแพ็กเกจ

pip install -U piexif

เท่านี้ก็จะกลายเป็นเวอร์ชันใหม่

Collecting piexif  
Downloading https://files.pythonhosted.org/packages/d9/45/19726eac3f8ddedccff86de92fa6d16d90b0e9257df811b7331f0b91d966/piexif-1.1.2-py2.py3-none-any.whl  
Installing collected packages: piexif  
Found existing installation: piexif 1.0.0  
Uninstalling piexif-1.0.0:  
Successfully uninstalled piexif-1.0.0  
Successfully installed piexif-1.1.2

ปกติถ้าหากแพ็กเกจต้องการที่จะลงมีอยู่แล้วพอสั่ง pip install ไปก็จะขึ้นแบบนี้

Requirement already satisfied: piexif in /anaconda3/lib/python3.7/site-packages (1.1.2)

แต่ถ้าหากต้องการบังคับให้ลงใหม่โดยไม่สนว่าจะมีอยู่แล้วหรือเปล่าก็ให้ใช้ --force-reinstall หรือ -I หรือ --ignore-installed

pip install piexif --force-reinstall

ปกติแล้วแพ็กเกจจะถูกนำไปเก็บไว้ในโฟลเดอร์ site-packages ที่เก็บรวมแพ็กเกจที่ใช้สำหรับไพธอนตัวที่ลงไว้ในเครื่อง

แต่ในบางครั้งถ้าไพธอนถูกลงไว้ในส่วนกลาง แต่เราต้องการลงแพ็กเกจใหม่เพื่อใช้อยู่คนเดียว หรือไม่มีสิทธิ์ sudo ทำให้ไม่สามารถลงได้ กรณีแบบนั้นให้ใส่ --user

pip install piexif --user

แบบนี้แพ็กเกจจะไปเก็บอยู่ในโฟลเดอร์บ้านของผู้ใช้คนนั้นเอง เช่นใน mac จะไปถูกเก็บอยู่ใน /Users/ชื่อผู้ใช้/.local/lib เป็นต้น

ลงพร้อมกันหลายตัว

ปกติแล้วถ้าใส่ชื่อแพ็กเกจซ้อนกันหลายๆตัวจะเป็นการลงหลายๆตัวต่อกันไป

pip install piexif imageio scikit-image

แต่บางทีถ้าเราต้องการลงหลายแพ็กเกจในเวลาเดียวกันอาจไม่สะดวกที่จะพิมพ์ทั้งหมด แบบนี้อาจเขียนชื่อทั้งหมดใส่ไฟล์ โดยเว้นบรรทัดละชื่อ แล้วใส่ -r แล้วตามด้วยชื่อไฟล์นั้น แบบนี้ก็จะเป็นการติดตั้งทั้งหมดที่มีชื่ออยู่

pip install -r r.txt

ใช้ --no-chache-dir

ปกติแพ็กเกจเวลาติดตั้งด้วย pip จะเริ่มจากการโหลดไฟล์ที่เกี่ยวข้อง แล้วไฟล์นั้นจึงถูกนำมารันเพื่อติดตั้งลงเครื่อง

ปกติไฟล์ที่โหลดนั้นจะถูกเก็บเอาไว้ เพื่อที่ถ้ามีความจำเป็นต้องเรียกใช้อีกจะได้ไม่ต้องโหลดใหม่

สถานที่เก็บจะต่างกันไป ขึ้นกับระบบปฏิบัติการ

  • ใน windows อยู่ใน โฟลเดอร์ที่ลงไว้\pip\Cache

  • ใน mac อยู่ใน Users/ชื่อผู้ใช้/Library/Caches/pip

  • ใน linux อยู่ใน home/ชื่อผู้ใช้/.cache/pip

แต่ว่าบางทีข้อมูลพวกนี้ก็มีขนาดใหญ่เกินและไม่ได้จำเป็น ถ้าต้องการประหยัดพื้นที่ควรจะสั่งให้ลบไฟล์ทิ้งไปไม่ต้องเก็บไว้ดีกว่า

ถ้าต้องการไม่ให้เก็บไฟล์เอาให้ใส่ --no-cache-dir

pip install piexif --no-chache-dir

pip uninstall

ถ้าไม่ต้องการแล้วจะเอาออกก็ pip uninstall เช่น

pip uninstall piexif

แล้วก็จะมีการถามยืนยัน พอกด y ไปแพ็กเกจก็จะถูกเอาออกเรียบร้อย

Uninstalling piexif-1.1.2:  
Would remove:  
/anaconda3/lib/python3.7/site-packages/piexif-1.1.2.dist-info/*  
/anaconda3/lib/python3.7/site-packages/piexif/*  
Proceed (y/n)? y  
Successfully uninstalled piexif-1.1.2

ปกติแล้วเวลา uninstall จะมีการถามเพื่อความแน่ใจก่อนว่าจะลบหรือไม่ แต่ถ้าอยากให้ลบไปเลยไม่ต้องมากดยืนยันให้เสียเวลาให้ใส่ -y

pip uninstall -y piexif

แบบนี้ก็จะเป็นการเอาออกทันที

Uninstalling piexif-1.1.2:  
Successfully uninstalled piexif-1.1.2

นอกจากนี้ หากมีหลายตัวที่ต้องการเอาออก ก็ใส่หลายตัวเรียงกันได้ หรือจะใช้ -r เพื่ออ่านจากไฟล์ก็ได้เช่นเดียวกับตอนลง

pip uninstall -r r.txt

โหลดแพ็กเกจด้วย pip download

นอกจากจะสั่ง pip install เพื่อลงทันทีแล้ว ถ้าแค่ต้องการโหลดตัวแพ็กเกจมาไว้ในเครื่องก็อาจใช้คำสั่ง pip download เช่น

pip download piexif

ก็จะได้ไฟล์มาโหลดเก็บไว้

Collecting piexif  
Downloading https://files.pythonhosted.org/packages/d9/45/19726eac3f8ddedccff86de92fa6d16d90b0e9257df811b7331f0b91d966/piexif-1.1.2-py2.py3-none-any.whl  
Saved ./piexif-1.1.2-py2.py3-none-any.whl  
Successfully downloaded piexif

ไฟล์นี้สามารถนำมาใช้เพื่อติดตั้งในภายหลังได้ วิธีการก็ใช้ pip install ตามด้วยชื่อไฟล์

pip install piexif-1.1.2-py2.py3-none-any.whl

แสดงรายชื่อแพ็กเกจที่ลงไว้ โดยใช้ pip list หรือ pip freeze

หากต้องการให้แสดงรายชื่อของแพ็กเกจที่ลงก็สั่ง

pip list

ได้

Package Version  
---------------------------------- ----------  
alabaster 0.7.11  
anaconda-client 1.7.2  
anaconda-navigator 1.9.4  
ฯลฯ

ถ้าต้องการให้แสดงเฉพาะแพ็กเกจที่อัปยังไม่ถึงล่าสุดให้ใช้ -o หรือ --outdated pip list -o

ได้

Package Version Latest Type

alabaster 0.7.11 0.7.12 wheel astroid 2.0.4 2.1.0 wheel astropy 3.0.4 3.1.1 wheel ฯลฯ

ในทางกลับกัน ถ้าต้องการให้แสดงแค่ตัวที่เป็นเวอร์ชันล่าสุดอยู่แล้วให้ใช้ -u หรือ --uptodate

pip list -u

นอกจากนี้ยังมีคำสั่ง freeze สามารถแสดงแพ็กเกจที่ลงไว้ได้เหมือนกันแต่จะแสดงผลต่างกัน

pip freeze

ได้ผลเป็นแบบนี้

alabaster==0.7.11  
anaconda-client==1.7.2  
anaconda-navigator==1.9.4  
ฯลฯ

การแสดงในรูปแบบนี้มีประโยชน์ตรงที่ว่า ถ้าหากนำมาบันทึกใส่ไฟล์ไว้ ไฟล์นั้นจะนำไปใช้สำหรับติดตั้งด้วยคำสั่ง pip install -r ได้ทันที จึงเหมาะกับเวลาต้องการอพยพย้ายเครื่องแล้วไม่ต้องมาจำว่าลงอะไรไปบ้าง

หากเขียน > แล้วตามด้วยชื่อไฟล์แบบนี้ก็จะเป็นการบันทึกลงไฟล์ได้ทันที

pip freeze > r.txt

ค้นหาแพ็กเกจที่ต้องการด้วย pip search

สามารถค้นหาแพ็กเกจที่ต้องการได้จากชื่อแพ็กเกจด้วย pip search แล้วจะได้รายชื่อแพ็กเกจที่เกี่ยวข้องมา

pip search piexif

ได้

piexif (1.1.2) - To simplify exif manipulations with python. Writing,  
reading, and more...  
INSTALLED: 1.1.2 (latest)  
GPSPhoto (2.2.2) - Returns, Modifies, or Removes GPS Data from Exif Data in  
jpeg and tiff photos. Requires ExifRead, piexif, and PIL.

แสดงรายละเอียดของแพ็กเกจด้วย pip show

คำสั่ง pip show ใช้แสดงรายละเอียดของแพ็กเกจที่ลงไว้ได้

pip show piexif

ได้

Name: piexif  
Version: 1.1.2  
Summary: To simplify exif manipulations with python. Writing, reading, and more...  
Home-page: https://github.com/hMatoba/Piexif  
Author: hMatoba  
Author-email: hiroaki.mtb@outlook.com  
License: MIT  
Location: /anaconda3/lib/python3.7/site-packages  
Requires:  
Required-by:

ถ้าเติม -f หรือ --files จะแสดงรายชื่อไฟล์ทั้งหมดที่ลงอยู่ในแพ็กเกจนั้น

pip show -f piexif

import pip

อันที่จริง pip เองก็เป็นมอดูลหนึ่งใน python ด้วย สามารถลองเรียกใช้ได้ เพียงแต่ก็มักไม่ได้ใช้ทำอะไรมาก

ตัวอย่างเช่น

import pip
print(pip.__version__) # ได้ 18.1

ข้อความที่ขึ้นระหว่างทำคำสั่ง

ปกติเวลาติดตั้งแพ็กเกจหรือทำอะไรจะเห็นขึ้นคำอธิบายมาประมาณนึง แต่ถ้าอยากให้อธิบายเหตุการณ์ทั้งหมดอย่าละเอียดยิบอาจใส่ -v หรือ --verbose

pip install piexif -v

ในทางกลับกันถ้าไม่ต้องการให้ขึ้นข้อความอะไรเลยให้ใช้ -q หรือ --quiet แต่แบบนี้แพ็กเกจลงสำเร็จหรือมีปัญหาอะไรตรงไหนก็จะไม่อาจรู้ได้เลย

pip install piexif -q

ถ้าต้องการบันทึกข้อความที่แสดงทั้งหมดไว้ในไฟล์ก็อาจใส่ --log

pip install piexif --log log.txt

ตรวจดูเวอร์ชัน

หากต้องการดูเวอร์ชันของ pip ที่ลงอยู่ให้พิมพ์ -V หรือ --version

pip -V

ได้

pip 18.1 from /anaconda3/lib/python3.7/site-packages/pip (python 3.7)

หาข้อมูลเพิ่มเติม

สุดท้าย ถ้าต้องการข้อมูลเพิ่มเติมให้พิมพ์ help หรือ -h หรือ --help จะบอกข้อมูลการใช้

pip -h

และถ้าใส่ชื่อคำสั่งไปด้วยจะได้รายละเอียดของคำสั่งนั้นๆ

pip list -h

การอัปแพ็กเกจทั้งหมดเป็นเวอร์ชันล่าสุด

pip ไม่ได้เตรียมคำสั่งสำเร็จรูปสำหรับทำให้แพ็กเกจเป็นเวอร์ชั้นล่าสุดทั้งหมดได้ในทันที

แต่เราสามารถใช้คำสั่ง pip list -o เพื่อไล่รายชื่อแพ็กเกจที่ยังไม่ใช่เวอร์ชันล่าสุด จากนั้นสั่ง pip install -U ได้

ทั้งหมดนี้สามารถทำโดยอัตโนมัติด้วยวิธีต่างๆ จะเขียนคำสั่งซ้อนกันในเชลก็ได้ หรืออาจใช้ไพธอน โดยเรียกคำสั่งในเชลด้วย subprocess.check_output

import subprocess
lispip = subprocess.check_output('pip list -o',shell=1).decode('utf-8').strip().split('\n')
for p in lispip[2:]:
    p = p.split(' ')[0]
    try:
        print(subprocess.check_output('pip install -U %s'%p,shell=1).decode('utf-8'))
    except: # บางแพ็กเกจอาจมีปัญหา
        print('%s: เกิดข้อผิดพลาด'%p)

ทั้งหมดนี้เป็นส่วนหนึ่งของวิธีการใช้ pip

รายละเอียดจริงๆยังมีอีกมากมาย สามารถไปอ่านเพิ่มเติมกันได้

นอกจาก pip แล้วก็ยังมีของอีกอย่างที่ใช้ลงแพ็กเกจได้คล้ายๆกันคือ conda อ่านรายละเอียดได้ใน https://phyblas.hinaboshi.com/20190118

Reference : https://phyblas.hinaboshi.com

Last updated