เจ้า virtualenv เนี่ย มันก็คือการที่เราสร้างสภาพแวดล้อมให้โปรเจคที่พัฒนาด้วย python ให้ลองจินตนาการว่าเรากำลังพัฒนาโปรเจคอยู่ 2 โปรเจคที่มีการใช้ python คนละเวอร์ชัน และลง library / package ที่แตกต่างกัน แล้วปัญหาที่จะเกิดตามมาก็คือไอ้เจ้า python คนละเวอร์ชันที่เราลงเนี่ยมันอาจจะ conflict หรือว่าตีกันมั่วได้ มันจะดีกว่าไหมถ้าเราสามารถสร้างกล่องขึ้นมาแล้วแยกสภาพแวดล้อมให้ของใครของมัน ไม่ต้องยุ่งเกี่ยวกัน เวลาจะพัฒนาโปรเจคไหนก็เรียกใช้สภาพแวดล้อมนั้นขึ้นมา ซึ่งไอ้สิ่งที่จะมาช่วยในการสร้างกล่องแยกกันก็คือ virtualenv นั่นเอง

ลองมาดูคำสั่งสำหรับใช้งาน virtualenv สำหรับ MacOS กัน

การติดตั้ง virtualenv

$ pip install virtualenv

การสร้าง virtualenv

$ virtualenv venv

โดยที่ venv คือ ชื่อของ environment ที่เราต้องการสร้าง จะตั้งเป็นชื่ออะไรก็ได้ สมมติอยากให้ environment นั้นชื่อว่า env1 ก็ใช้คำสั่ง virtualenv env1

หลังจากทำการสร้าง virtualenv เสร็จ เราจะได้โฟลเดอร์มาหนึ่งโฟลเดอร์ที่มีชื่อตามที่เราตั้ง(ในที่นี้คือ venv)

เมื่อสร้าง environtment เสร็จ ทีนี้เราก็ต้องทำการ activate environment นั้นขึ้นมาก่อน

การ activate virtualenv

$ source env/bin/activate

หลังจาก activate แล้ว command line จะเป็นแบบนี้

(env) $

เราจะเห็นได้ว่ามี (env) ที่เป็นชื่อของ environment ปรากฏอยู่ด้านหน้าเพื่อบ่งบอกว่าตอนนี้เราทำงานอยู่ใน environtment ชื่อ env นะ คราวนี้เวลาเราจะติดตั้ง package อะไรก็สามารถใช้คำสั่งด้านล่างเพื่อติดตั้งได้เลย

$ pip install <ชื่อ package>

การ deactivate virtualenv

(env) $ deactivate

ถ้าเราใช้งานเสร็จ อยากออกจาก environment นั้น เราก็สามารถทำได้โดยใช้คำสั่ง deactivate ก็เป็นอันเสร็จสิ้น

Property display ที่ใช้บ่อยๆก็มีอยู่ 4 ค่า คือ
block | inline | inline-block | none

  1. display : block;
    โดยปกติแล้วจะเป็นค่า default ของ element ส่วนใหญ่ ซึ่งลักษณะของมันก็คือ
    - มีความกว้างของ element เต็มบรรทัด ทำให้เมื่อเพิ่ม element ใหม่ จะไปอยู่บรรทัดถัดไป
    - หากไม่มีการกำหนด width ก็จะมีความกว้างเท่าที่จะสามารถกว้างได้
  2. display: inline;
    - ขนาดของ box เท่าความยาว text
    - เมื่อเพิ่ม element ใหม่ จะอยู่ในบรรทัดเดียวกัน
    - การกำหนด width และ height ไม่มีผลกับ inline element
    - สามารถกำหนด margin padding ได้ ซึ่งจะเป็นการดัน element อื่นในแนว horizontal (แนวนอน) เท่านั้น ไม่มีผลในแนว vertical (แนวตั้ง)
  3. display: inline-block;
    มีคุณสมบัติเหมือน inline ต่างกันแค่
    - สามารถกำหนด width, height ได้
  4. display: none;
    - เป็นการซ่อน element นั้น ไม่ให้ปรากฎ