บทนำ
นักพัฒนามักจัดการกับโปรเจกต์ Python ที่ต้องใช้โมดูลและแพ็กเกจที่ไม่ใช่ส่วนหนึ่งของ Python Standard Library และต้องการมันสำหรับแอปพลิเคชันเฉพาะนั้นเท่านั้น พิจารณากรณีที่คุณติดตั้ง Python เวอร์ชันปัจจุบัน (สมมติว่าเป็น python-3.6) แต่โปรเจกต์ของคุณต้องการ Python เวอร์ชันเฉพาะ -- 2.7 สำหรับแอปพลิเคชันเฉพาะนั้น ดังนั้นไม่ใช่แค่แพ็กเกจใหม่ แต่ข้อกำหนดอาจมาสำหรับเวอร์ชันเฉพาะของแอปพลิเคชันที่ติดตั้งแล้ว ข้อกำหนดจึงขัดแย้งกัน และการติดตั้งเวอร์ชัน 2.7 หรือ 3.6 จะทำให้แอปพลิเคชันหนึ่งไม่สามารถรันได้
หนึ่งในวิธีแก้ปัญหาสำหรับสถานการณ์เหล่านี้คือการสร้าง virtual environment สำหรับโปรเจกต์ของคุณ Virtualenv เป็นเครื่องมือประเภทหนึ่งที่ช่วยให้เราสร้างสภาพแวดล้อม Python แบบ isolated ได้ Virtualenv สร้างโฟลเดอร์ self-contained ที่มี executables ทั้งหมดที่จำเป็นในการใช้แพ็กเกจที่โปรเจกต์ Python จะต้องการในโปรเจกต์ของมัน
ทำไมเราต้องการมัน?
วัตถุประสงค์หลักของการใช้ virtualenv (virtual environment tool) คือเพื่อแก้ปัญหา dependencies, versions (ของแพ็กเกจ Python) และ permissions โดยอ้อม
ข้อกำหนดสำหรับการติดตั้ง Virtual Environment
ก่อนอื่นเลย คุณต้องมี Python ติดตั้งในเครื่องของคุณ (ไม่จำเป็นต้องเป็นเวอร์ชันล่าสุด) และ pip package manager อย่างไรก็ตาม หากคุณใช้ Python 3.4 หรือสูงกว่า pip จะรวมอยู่โดย default (มาพร้อมกับ Python standard library) ในกรณีที่คุณไม่มีอะไรสักอย่าง หนึ่งในนั้น แนะนำให้ติดตั้งมันก่อน
การสร้าง Virtual Environments
เปิด command prompt (พิมพ์ cmd ใน run terminal) ตอนนี้ไปที่ directory path (ตำแหน่ง) ที่คุณต้องการติดตั้ง virtual environment
ในกรณีที่คุณไม่ได้ใช้ Python 3.x แล้วคุณต้องติดตั้ง virtualenv tool ด้วย pip
Shell
pip install virtualenv
ในกรณีที่ virtualenv ติดตั้งแล้ว (ไม่ว่าคุณจะใช้ Python 3 หรือคุณไม่รู้ว่าติดตั้ง virtualenv ไว้แล้ว) การรันคำสั่งข้างต้นจะให้ข้อความประมาณนี้ −
>pip install virtualenv Requirement already satisfied: virtualenv in c:\python\python361\lib\site-packages (15.1.0)
เริ่มต้นด้วยการสร้างโฟลเดอร์ใหม่เพื่อทำงาน
Shell
mkdir python-virtual-environments && cd python-virtual-environments
หลังจากรันคำสั่งข้างต้น คุณอยู่ภายในโฟลเดอร์ที่สร้างใหม่ ตอนนี้สร้าง virtual environment ใหม่ภายในไดเรกทอรี (ไดเรกทอรีที่คุณสร้างข้างต้น)
Shell
# สำหรับ Python 2.x version −
virtualenv myenv
# สำหรับ Python 3.x version −
python -m venv myenv
สคริปต์ข้างต้นจะสร้างโฟลเดอร์ใหม่ชื่อ myenv พร้อมกับโฟลเดอร์ย่อยสองสามโฟลเดอร์และไฟล์มากมาย โครงสร้างไดเรกทอรีคล้ายกับด้านล่าง −
├── Include │ ├── abstract.h │ ├── accu.h │ ├── asdl.h │ ├── ast.h │ ├── bitset.h ...... ├── Lib │ ├── __future__.py │ ├── __pycache__ │ ├── _bootlocale.py │ ├── _collections_abc.py │ ├── _dummy_thread.py │ ├── _weakrefset.py │ ├── abc.py │ ├── base64.py │ ├── bisect.py │ ├── codecs.py ...... ├── pip-selfcheck.json ├── Scripts │ ├── activate │ ├── activate.bat │ ├── activate.ps1 │ ├── activate_this.py │ ├── deactivate.bat │ ├── easy_install.exe │ ├── easy_install-3.6.exe │ ├── pip.exe │ ├── pip3.6.exe │ ├── pip3.exe │ ├── python.exe │ ├── python36.dll │ ├── pythonw.exe │ └── wheel.exe
โดยที่ −
Include (directory): C headers ที่คอมไพล์แพ็กเกจ Python
Scripts(directory): ไฟล์ที่โต้ตอบกับ virtual environment
Lib(directory): มี Python version copy และ site-packages directory ที่แต่ละ dependency ถูกติดตั้ง
วิธี Activate Virtual Environment?
ไฟล์ที่น่าสนใจหนึ่งคือ activate scripts ใน scripts directory Activate scripts ใช้ python executables ของ environment และ site-package ของมันโดย default เพื่อตั้งค่า shell ของคุณ
อย่างไรก็ตาม เพื่อใช้แพ็กเกจหรือทรัพยากรของ virtual environment "myenv" แบบ isolated คุณต้อง "activate" มันก่อน ในการ activate virtual environment ของคุณ ให้รันคำสั่งตามที่แสดงในภาพหน้าจอ

เมื่อ virtual environment active แล้ว เราสามารถติดตั้งแพ็กเกจและ dependencies ที่เกี่ยวข้องกับโปรเจกต์ทั้งหมด แยกจากโลกภายนอก ตัวอย่างเช่น หากเราทำงานกับโปรเจกต์ data science เราสามารถติดตั้งแพ็กเกจที่จำเป็นทั้งหมดและ dependencies ของพวกมันพร้อมกันได้ง่ายๆ โดยพิมพ์คำสั่งด้านล่างแบบนี้ −
(myenv) C:\Users\rajesh\python-virtual-environments>pip install numpy scipy matplotlib ipython jupyter pandas
เมื่อเราทำโปรเจกต์เสร็จแล้ว เราสามารถออกจาก virtual environment ได้ง่ายๆ โดย deactivate มัน
(myenv) C:\Users\rajesh\python-virtual-environments>deactivate C:\Users\rajesh\python-virtual-environments>
ตอนนี้เรากลับมาที่ Windows command shell (เหมือนข้างต้น) แล้ว