ในการใช้ภาษาไพธอน นอกจากมอดูลมาตรฐานที่มีอยู่แต่แรกแล้ว บ่อยครั้งจำเป็นต้องติดตั้งมอดูลเสริม (แพ็กเกจเสริม) เพิ่มเติมที่จำเพาะสำหรับงานที่ต้องการ
วิธีการลงมอดูลใหม่นั้นมีหลายวิธีด้วยกัน แต่ที่นิยมมากที่สุดคือใช้ pip
แค่เข้าคอมมานด์ไลน์แล้วพิมพ์
pip install ชื่อแพ็กเกจ
เท่านี้แพ็กเกจของมอดูลที่ต้องการก็จะถูกติดตั้งลงเครื่อง (ถ้าไม่ติดปัญหาอะไรบางอย่าง)
pip มีประโยชน์มากสำหรับคนที่เขียนไพธอน
เอาไว้ใช้คลุมหัวเวลาที่อายได้ด้วย... นั่นมันปี๊บ คิดว่าคนที่เขียนไพธอนเกือบทุกคนน่าจะรู้จัก 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 อ้างอิง