สวัสดีครับ ไม่ได้เขียน 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