สวัสดีครับ ไม่ได้เขียน Medium ค่อนข้างนานเลยครับ ช่วงนี้ผมไม่ค่อยมีเรื่องจะเขียนเท่าไร + ไม่ค่อยมีเวลาเพราะติดเรียนครับ
แต่ว่าไหนๆมันก็จะสิ้นปีแล้วผมเลยอยากเขียน medium อีกซักอันมาประดับ Profile ซักอันหน่อยครับ 555
TL;DR สรุปย่อเผื่อขี้เกียจอ่าน
- virtualenv คือ environment จำลองของ python
- วิธีใช้แค่ virtualenv <ชื่อโปรเจค>
- activate โดยการ Scripts\activate
- deactivate โดยการ Scripts\deactivate.bat
อะไรคือ virtualenv?
สำหรับคนที่มี Python ติดเครื่องแล้วลง Library หรือ Module ไว้เยอะแบบผมบางทีก็คงงงเหมือนกันครับว่าเวลาทำโปรเจคอะไรแล้วจะใช้ Library ตัวไหนบ้าง ปัญหาอีกอย่างคือตอนอยาก Deploy App ไปเครื่องอื่นครับ บางทีเวลาเราเขียนๆไปเราก็จำไม่ได้แล้วว่าโปรเจคของเราใช้ Library อะไรบ้าง
คือ virtualenv เนี่ยก็เป็นตัวที่เข้ามาแก้ปัญหานี้แหละครับ เพื่อความเป็นระเบียบของ environment โค้ดของเรา พอจะเริ่มโปรเจคอะไรเราก็ลง Python + pip + library ต่างๆใหม่เลย ใน environment ตัวใหม่ซึ่ง virtualenv จำลองมาให้แทนครับ
อนึ่ง virtualenv ช่วยทำให้การจัดการไลบรารี่เป็นไปได้ง่ายมากขึ้นเยอะเลยครับ อาจจะดูใช้ยากในตอนแรกแต่รับรองเลยว่าใช้แล้วจะชอบ (ถ้าเป็นคนชอบอะไร minimal ด้วยแล้ว)
ติดตั้งยังไง?
ง่ายๆครับ
pip install virtualenv
ใช้ยังไง?
อนึ่ง ผมแนะนำให้ใช้ cmd ทำนะครับเพราะ PowerShell อาจจะมีปัญหา execution policies ได้
หาโฟลเดอร์ที่ใช้เก็บโปรเจค สมมติว่าผมจะทำโปรเจคนึงใช้ tensorflow ทำครับ ไลบรารี่ที่ผมต้องการลงก็มีแค่ tensorflow เลยตั้งชื่อว่า tensorflow-project ผมก็แค่พิมพ์ใน cmd ว่าvirtualenv tensorflow-project
ทีนี้ virtualenv ก็จะติดตั้ง python กับส่วนประกอบอื่นๆลงในโฟลเดอร์ที่ชื่อว่า tensorflow-project ครับ
โฟลเดอร์ที่ virtualenv สร้างให้
ที่นี้ถ้าอยากใช้ก็แค่เข้าไปใน directory นั้นครับcd tensorflow-projectScripts\activate
เมื่อ activate ที่บรรทัดที่ 2 แล้วจะเห็นว่ามีวงเล็บอยู่ข้างหน้า Path ของเราครับ นั่นเป็นการบอกว่าเราเข้าสู่ virtualenv แล้ว
ทีนี้ถ้าอยากรู้ว่ามี library อะไรที่ติดตั้งอยู่ก็แค่พิมพ์pip freeze
จะเห็นว่าไม่มีอะไรติดตั้งอยู่เลย ซึ่งเป็นไปตามที่เราอยากให้เป็นครับ ทีนี้อยากติดตั้ง tensorflow ก็ติดตั้งตามปกติครับ
ติดตั้งเสร็จก็มาดูกันใหม่
จะเห็นว่ามี tensorflow โผล่มาแล้วครับ ส่วนอันอื่นๆคือ Library ที่ตัว tensorflow require ครับ ทีนี้มาลอง test ที่ cmd ดูว่าใช้ได้มั้ย
ปรากฎว่าใช้ได้ไม่มีปัญหาอะไรครับ
ถ้าถามว่าดีมั้ยผมตอบเลยครับว่าดีต่อใจผมมากๆ เพราะต่อไปถ้าผมอยากเอาโปรเจคผมไปให้คนอื่นใช้ ผมก็แค่พิมพ์ pip freeze > requirement.txt ไปให้คนอื่นไปติดตั้ง แล้วก็ย้ายโค้ดไปเท่านั้น
บวกกับไม่ต้องจัดการไลบรารี่ที่มีเป็นสิบๆเหมือนแต่ก่อนอีกแล้ว ซึ่งเป็นอะไรที่สะดวกมากๆครับ
แล้วทีนี้ถ้าอยากจะทำเป็นโปรเจคใหญ่ๆมีโค้ดหลายๆอันทำไงดี
ถ้าเป็นผมผมจะสร้างโฟลเดอร์มาอีกโฟลเดอร์นึงใน environment ครับ ชื่อว่า project, myscript, src หรืออะไรก็ได้ตามใจชอบ แล้วก็โยนโค้ดลงในโฟลเดอร์นั้นครับ ทำทำไม? เพื่อที่จะทำให้การจัดการโค้ดเป็นไปได้ง่ายขึ้นครับ เพราะจะเห็นว่า folder ที่ virtualenv จัดมาให้มันดูเยอะๆ เดี๋ยวอาจจะสับสนได้
ทีนี้ถ้าจะออกทำไง ก็แค่พิมพ์ว่าScript\deactivate.bat
เพียงเท่านี้ครับ ก็จะเป็นการออกจาก virtualenv
สำหรับวันนี้ก็คงมีเท่านี้ครับ ช่วงนี้อากาศหนาวมาก (ผมอยู่ขอนแก่นอุณหภูมิ 10–15 องศามา 2–3 วันแล้วครับ) ก็ขอให้ทุกคนมีความสุขในวันปีใหม่ที่จะถึงนี้นะครับ ส่วนผมขอตัวไปเตรียมสอบก่อน T_T