ติดตั้งและหัดใช้ pip, venv ใน Python 3 บน Ubuntu 16.04

หลังจากที่ศึกษาการใช้งาน python มาสักพัก เห็นว่ามีหลากหลายวิธีในการติดตั้ง ทั้งเรื่องเวอร์ชันของตัว python เอง การติดตั้งโมดูล การคอนฟิกเพื่อเขียน python แสดงผลบนหน้าเว็บได้ เลยว่าจะแชร์ประสบการณ์ที่ได้ ซึ่งเป็นวิธีการหนึ่งในการติดตั้งและคอนฟิก เผื่อมีประโยชน์กับผู้สนใจนำไปใช้กัน

ในที่นี้จะใช้ python เวอร์ชัน 3 เท่านั้น เหมาะสำหรับผู้เริ่มต้นกับ python และเพื่อความง่ายและไม่สับสนในเรื่องเวอร์ชัน จะขอทดลองบน Ubuntu 16.04 ที่โดยดีฟอลต์จะติดตั้งมาเฉพาะ Python 3 เท่านั้น

ลองพิมพ์ python3 แล้วกดปุ่ม [tab] สองครั้ง จะแสดงรายชื่อคำสั่งที่ขึ้นต้นด้วย python3

dev@ubuntu-1604:~$ python3
python3    python3.5    python3.5m    python3m

เวอร์ชันที่ติดตั้งมาคือ 3.5

dev@ubuntu-1604:~$ python3 -V
Python 3.5.2

หมายเหตุ อย่าลืมระบุเลข 3 ในการพิมพ์แต่ละคำสั่ง มิฉะนั้นจะเป็นการเรียกใช้ python 2 ซึ่งอาจทำให้ apt install พยายามติดตั้งเวอร์ชัน 2 ได้

ติดตั้ง python3 pip

เพื่อความง่ายในการติดตั้งโมดูลหรือแพ็คเกจใน python เพิ่มเติม แนะนำให้ติดตั้ง pip เพื่อช่วยในการบริหารจัดการ

ใช้คำสั่ง apt install ติดตั้งแพ็คเกจ python3-pip

dev@ubuntu-1604:~$ sudo apt install python3-pip

หลังการติดตั้งแพ็คเกจ ลองพิมพ์คำสั่ง pip3 -V เพื่อแสดงเวอร์ชัน

dev@ubuntu-1604:~$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

หรืออาจใช้คำสั่ง python3 ระบุออปชัน -m

dev@ubuntu-1604:~$ python3 -m pip -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

ติดตั้ง python 3 venv

venv เป็นโมดูลของ python เพื่อใช้ในการสร้าง Virtual ENVironment สำหรับการพัฒนาโปรแกรม โดยอาจมีโมดูลหรือเวอร์ชัน แตกต่างจากระบบหลัก (system) ได้

ใช้คำสั่ง apt install ติดตั้งแพ็คเกจ python3-venv

dev@ubuntu-1604:~$ sudo apt install python3-venv

สร้าง Virtual ENVironment (venv)

สร้างไดเรคทอรี environments สำหรับเก็บไฟล์ที่จะใช้ทดสอบสร้าง virtual environment

dev@ubuntu-1604:~$ mkdir environments
dev@ubuntu-1604:~$ cd environments/

ใช้คำสั่ง pyvenv หรือ python3 ระบุออปชัน -m venv ตามด้วยชื่อ virtual environment ที่ต้องการสร้าง

หมายเหตุ ทางผู้พัฒนา python แนะนำให้ใช้ python3 -m venv แทนการใช้คำสั่ง pyenv เพื่อป้องกันความสับสนในการพิมพ์คำสั่ง

dev@ubuntu-1604:~/environments$ python3 -m venv env1

จะมีไดเรคทอรี ตามชื่อ virtual environment ถูกสร้างขึ้นมา พร้อมไฟล์และไดเรคทอรีย่อยที่อยู่ภายใน

dev@ubuntu-1604:~/environments$ ls -l
total 4
drwxrwxr-x 6 dev dev 4096 Nov 27 15:32 env1

dev@ubuntu-1604:~/environments$ ls -l env1/
total 20
drwxrwxr-x 2 dev dev 4096 Nov 27 15:32 bin
drwxrwxr-x 2 dev dev 4096 Nov 27 15:32 include
drwxrwxr-x 3 dev dev 4096 Nov 27 15:32 lib
lrwxrwxrwx 1 dev dev    3 Nov 27 15:32 lib64 -> lib
-rw-rw-r-- 1 dev dev   69 Nov 27 15:32 pyvenv.cfg
drwxrwxr-x 3 dev dev 4096 Nov 27 15:32 share

dev@ubuntu-1604:~/environments$ ls -l env1/bin/
total 32
-rw-r--r-- 1 dev dev 2143 Nov 27 15:32 activate
-rw-r--r-- 1 dev dev 1259 Nov 27 15:32 activate.csh
-rw-r--r-- 1 dev dev 2397 Nov 27 15:32 activate.fish
-rwxrwxr-x 1 dev dev  256 Nov 27 15:32 easy_install
-rwxrwxr-x 1 dev dev  256 Nov 27 15:32 easy_install-3.5
-rwxrwxr-x 1 dev dev  228 Nov 27 15:32 pip
-rwxrwxr-x 1 dev dev  228 Nov 27 15:32 pip3
-rwxrwxr-x 1 dev dev  228 Nov 27 15:32 pip3.5
lrwxrwxrwx 1 dev dev    7 Nov 27 15:32 python -> python3
lrwxrwxrwx 1 dev dev   16 Nov 27 15:32 python3 -> /usr/bin/python3

ใช้คำสั่ง source ตามด้วยไฟล์ activate ของ virtual environment เพื่อกำหนดค่าต่างๆ

dev@ubuntu-1604:~/environments$ source env1/bin/activate
(env1) dev@ubuntu-1604:~/environments$

สังเกตว่า prompt จะแสดงชื่อ virtual environment ด้วย ซึ่งแสดงว่าตอนนี้เรากำลังทำงานอยู่ใน virtual environment

ถ้าลองพิมพ์คำสั่ง python แล้วกดปุ่ม [tab] สองครั้ง จะเห็นว่ามีคำว่า python ที่ไม่มีตัวเลขแสดงขึ้นมาด้วย

(env1) dev@ubuntu-1604:~/environments$ python
python   python3.5         python3.5m  python3-config   python3m-config
python3  python3.5-config  python3.5m-config   python3m

แต่ใน virtual environment นี้ คำสั่ง python จะเป็นการอ้างอิงเวอร์ชัน 3 ด้วย ซึ่งจะแตกต่างจากระบบหลัก (system)

(env1) dev@ubuntu-1604:~/environments$ python -V
Python 3.5.2

เพราะฉะนั้น ใน venv นี้เราจะเรียกคำสั่ง python หรือ python3 ก็ได้ผลเหมือนกัน

ลองพิมพ์คำสั่ง pip ก็จะมีคำสั่ง pip ที่ไม่มีตัวเลขด้วย

(env1) dev@ubuntu-1604:~/environments$ pip
pip    pip3    pip3.5

ลองใช้ pip ระบุออปชัน -V เพื่อดูข้อมูลเวอร์ชัน

(env1) dev@ubuntu-1604:~/environments$ pip -V
pip 8.1.1 from /home/dev/environments/env1/lib/python3.5/site-packages (python 3.5)

พิมพ์คำสั่ง pip install –upgrade pip เพื่ออัพเกรดเวอร์ชันของ pip

(env1) dev@ubuntu-1604:~/environments$ pip install --upgrade pip
Collecting pip
 Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
 100% |████████████████████████████████| 1.3MB 837kB/s
Installing collected packages: pip
 Found existing installation: pip 8.1.1
 Uninstalling pip-8.1.1:
 Successfully uninstalled pip-8.1.1
Successfully installed pip-9.0.1

หลังจากอัพเกรด pip ใน venv จะเป็นเวอร์ชัน 9.0.1 แล้ว

(env1) dev@ubuntu-1604:~/environments$ pip -V
pip 9.0.1 from /home/dev/environments/env1/lib/python3.5/site-packages (python 3.5)

พิมพ์ deactivate เพื่อออกจาก venv

(env1) dev@ubuntu-1604:~/environments$ deactivate
dev@ubuntu-1604:~/environments$

สังเกตที่ prompt หลังจาก deactivate จะไม่มี (env1) แล้ว ทำให้ตอนนี้เรากลับมาสู่ระบบหลักของเครื่อง

ลองดูเวอร์ชันของ pip3 ข้างนอก

dev@ubuntu-1604:~/environments$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

การใช้ venv หรือ virtual environment จะทำให้เราสร้างคอนฟิกที่แตกต่างจากระบบหลักได้

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.