สอนวิธีสร้าง Environment Python และมีข้อดีอย่างไร

Preechaik
Apr 18, 2020

--

หัวข้อนี้เป็นสอนการสร้างEnvironment Python และแนวทางสำหรับนักพัฒนาที่ทำหลายโปรเจค ซึ่งแต่ละโปรเจค มี Module ที่ใช้แตกต่างกันไป

ปัญหา

ส่วนตัวที่พบปัญหาคือ ผมพัฒนาโปรเจค GUI สำหรับลงทะเบียน แล้วต้องการแชร์โปรเจคให้กับนักพัฒนาอีกคน โดยที่นักพัฒนาอีกคนต้องมี Module เหมือนกันทุกอย่าง ทางออกคือเลือกใช้ Module freeze ทำหน้าที่รวม Module ที่ใช้ในโปรเจค แต่ปรากฏว่าลืมสร้าง Environment ทำให้ได้ Module ที่ลงไว้ทั้งหมดมาแทน

ข้อดี

ข้อดีของการสร้าง Environment ช่วยให้แบ่งการทำงานของ Module ได้ตามลักษณะงานและสามารถ ใช้ Module freeze เพื่อรวบรวม Module ของโปรเจคนั้นๆมาใช้

มีขั้นตอนดังนี้

ขั้นตอนที่ 1 ติดตั้ง Module

pip install virtualenv

เปิด CMD แล้วพิมคำสั่ง pip install virtualenv

ขั้นตอนที่ 2 สร้าง floder สำหรับจัดเก็บโปรเจค

สร้าง floder สำหรับจัดเก็บโปรเจค แล้วเปิด cmd เข้าไปใน path directory ตัวอย่างนี้ผมตั้งชื่อโปรเจคว่า GUI work

สร้าง floder ชื่อ GUI work
พิมพ์คำสั่ง cd desktop
พิมพ์คำสั่ง cd GUI work

ขั้นตอนที่ 3 เริ่มสร้าง Environment

พิมพ์คำสั่ง virtualenv venv จะทำหน้าที่สร้าง Floder venv และสภาพแวดล้อมที่จำเป็นและพร้อมสำหรับการทำงาน

virtualenv venv

พิมพ์คำสั่ง virtualenv venv

ขั้นตอนที่ 4 เริ่มใช้งาน Environment ของเรากันเถอะ

พิมพ์คำสั่ง .\venv\scripts\activate เป็นอันเสร็จเรียบร้อย จะสังเกตุมีคำว่า ‘(venv)’ ด้านหน้าสุดและสามารถติดตั้ง Module ได้ตามต้องการ

.\venv\scripts\activate

#หมายเหตุ ถ้าต้องการออกจาก venv ใช้คำสั่ง deactivate

พิมพ์คำสั่ง .\venv\scripts\activate

คำเตือน: ทุกครั้งที่เราเริ่มทำโปรเจคนี้จะต้องเข้ามาใน venv นี้ทุกครั้ง โดยพิมพ์คำสั่งแบบเดิมคือ .\venv\scripts\activate และควรเข้า path directory ให้ถูกต้อง

ขั้นตอนที่ 5 ติดตั้ง Module freeze ใน venv

pip install freeze==0.1.1

พิมพ์คำสั่ง pip install freeze==0.1.1

ขั้นตอนที่ 6 ทดสอบการดึง Module ของโปรเจคนี้

pip freeze > requirements.txt

โดยพิมพ์คำสั่งนี้ pip freeze > requirements.txt แล้วจะได้Module ที่อยู่ในไฟล์ txt

พิมพ์คำสั่ง pip freeze > requirements.txt

ให้ดูความแตกต่างการใช้ venv และไม่ใช้ venv

ใช้ venv

สามารถจัดการ Module ได้อย่างง่ายดาย

ไม่ใช้ venv

ต้องมาเสียเวลาคัดเลือก Module ที่ไม่จำเป็นออก

ขอบคุณที่อ่านจนจบ ผิดพลาดประการใด ขออภัย ด้วยครับ

--

--