เมื่อคุณพัฒนาในสภาพแวดล้อมที่ต่างกัน คุณอาจต้องการระบุค่าการกำหนดค่าที่แตกต่างกันสำหรับแต่ละสภาพแวดล้อม คอมพิวเตอร์ที่คุณพัฒนาแอปพลิเคชันจะไม่เหมือนกับคอมพิวเตอร์ที่คุณปรับใช้ (deploy) แอปพลิเคชัน
นี่คือที่ที่ตัวแปรสภาพแวดล้อม (environment variables) เข้ามามีประโยชน์!
ในคู่มือนี้ เราจะพูดถึงว่าตัวแปรสภาพแวดล้อมคืออะไรและวิธีการใช้งาน เราจะเดินทางผ่านตัวอย่างของตัวแปรสภาพแวดล้อม Python เพื่อช่วยให้คุณเริ่มต้นได้
ตัวแปรสภาพแวดล้อมคืออะไร?
ตัวแปรสภาพแวดล้อมคือตัวแปรที่ค่าของมันถูกตั้งค่าภายนอกโปรแกรม
ตัวแปรสภาพแวดล้อมช่วยให้คุณตั้งค่าที่แตกต่างกันสำหรับตัวแปรได้ ขึ้นอยู่กับสภาพแวดล้อมที่คุณกำลังสร้างแอปพลิเคชัน
ทำไมถึงใช้ตัวแปรสภาพแวดล้อม?
แอปพลิเคชันหลายอย่าง โดยเฉพาะแอปพลิเคชันร่วมมือ มีสภาพแวดล้อมที่แตกต่างกันหลายอย่าง สภาพแวดล้อมหนึ่งจะใช้สำหรับทดสอบ (testing) อีกอันสำหรับการผลิต (production) และอีกอันสำหรับการพัฒนา (development) สภาพแวดล้อมเหล่านี้มักมีค่าการกำหนดค่าที่แตกต่างกันซึ่งต้องตั้งค่า
คีย์ API ที่คุณใช้ในการผลิต (production) อาจจะไม่เหมือนกับที่คุณใช้บนเครื่องโลคอล (local machine) คุณอาจใช้ข้อมูลจำลอง (dummy data) บนเครื่องโลคอลเมื่อสร้างแอปพลิเคชัน แต่สิ่งนี้ไม่เหมาะสมในสภาพแวดล้อมการผลิต
ค่าของตัวแปรสภาพแวดล้อมสามารถเปลี่ยนแปลงได้โดยไม่ต้องเปลี่ยนแปลงโปรแกรมของคุณ หมายความว่าคุณสามารถปรับใช้การเปลี่ยนแปลงโค้ดได้ง่ายโดยไม่ต้องแทนที่ค่าการกำหนดค่าสำหรับสภาพแวดล้อมใหม่
ตัวแปรสภาพแวดล็อมยังใช้เพื่อวัตถุประสงค์ด้านความปลอดภัย การเขียนคีย์ API และค่าการกำหนดค่าภายในโปรแกรมหลักอาจมีความเสี่ยงเพราะทุกคนในโปรเจกต์สามารถเห็นได้ หากคุณระบุค่าไว้ในตัวแปรสภาพแวดล้อม เฉพาะโปรแกรมของคุณและนักพัฒนาที่ตั้งค่าตัวแปรเท่านั้นที่จะเข้าถึงได้
วิธีตั้งค่าตัวแปรสภาพแวดล้อม
มาเริ่มต้นด้วยการสร้างตัวแปรสภาพแวดล้อม ตัวแปรสภาพแวดล้อมจะคงอยู่จนกว่าจะสิ้นสุดเซสชัน Python ของคุณ หมายความว่าหากคุณปิด Python interpreter ตัวแปรจะถูกรีเซ็ตในสคริปต์ Python ของคุณ
เรากำลังสร้างแอปที่ใช้ Airtable API เราจะแชร์โค้ดของเราบน GitHub จึงไม่อยากให้คีย์ API แสดงต่อสาธารณะ เพื่อเพิ่มคีย์ API เข้าไปในโค้ดโดยไม่แชร์สาธารณะ เราจะใช้ตัวแปรสภาพแวดล้อม
ขั้นตอนแรกคือ import ไลบรารี os:
import os
ไลบรารีนี้มีโค้ดสำหรับทำงานกับตัวแปรสภาพแวดล้อม Python ต่อไป เราจะตั้งค่าตัวแปรสภาพแวดล้อม:
Os.environ[“AIRTABLE_KEY”] = “YOUR_API_KEY”
โค้ดนี้จะตั้งค่าตัวแปรชื่อ AIRTABLE_KEY ค่าของมันคือ YOUR_API_KEY การกำหนดตัวแปรสภาพแวดล้อมทำงานคล้ายกับการเปลี่ยนค่าในดิกชันนารี (dictionary)
คุณต้องระบุชื่อตัวแปรที่ต้องการตั้งค่าหรือเปลี่ยน ตามด้วยเครื่องหมายเท่ากับ แล้วตามด้วยค่าที่คุณต้องการกำหนดให้ตัวแปร
ไวยากรณ์เดียวกันสามารถใช้เพื่อเปลี่ยนตัวแปรสภาพแวดล้อม:
os.environ[“AIRTABLE_KEY”] = “YOUR_API_KEY_2”
ค่าของคีย์ API ของเราเปลี่ยนเป็น YOUR_API_KEY_2
วิธีดึงค่าตัวแปรสภาพแวดล้อม
เราเพิ่งตั้งค่าตัวแปรสภาพแวดล้อม คำถามในใจคุณอาจเป็น: เราจะดึงค่าได้อย่างไร? นี่คือที่ที่เราสามารถใช้เมธอด os.environ.get() ได้
มาดึงค่าของตัวแปร AIRTABLE_KEY ของเรา:
api_key = os.environ.get("AIRTABLE_KEY") print(api_key) เราระบุว่าเราต้องการรับค่าของตัวแปรสภาพแวดล้อม AIRTABLE_KEY เรากำหนดค่านี้ให้กับตัวแปรใหม่ชื่อ api_key และพิมพ์ไปยังคอนโซล
โค้ดของเราคืนค่า: YOUR_API_KEY_2.
คุณสามารถดึงรายการตัวแปรสภาพแวดล้อมทั้งหมดที่คุณตั้งค่าได้โดยการพิมพ์เนื้อหาของ os.environ ไปยังคอนโซล:
print(os.environ)
มีตัวแปรสภาพแวดล้อมเริ่มต้นจำนวนหนึ่งตั้งอยู่ภายใน Python หมายความว่าการพิมพ์ตัวแปรสภาพแวดล้อมทั้งหมดที่ตั้งอยู่ภายในโปรแกรม Python อาจคืนค่ารายการยาว
วิธีลบตัวแปรสภาพแวดล้อม
คุณสามารถลบตัวแปรสภาพแวดล้อมภายในโปรเจกต์ Python ได้ สามารถทำได้โดยใช้เมธอด os.environ.pop() มาลบตัวแปรสภาพแวดล้อม AIRTABLE_KEY ของเรา:
os.environ.pop(“AIRTABLE_KEY”)
โค้ดนี้ลบตัวแปรสภาพแวดล้อม AIRTABLE_KEY
มันไม่เป็นประโยชน์หากคุณต้องการล้างตัวแปรสภาพแวดล้อมหลายตัว หากคุณเริ่มอินสแตนซ์ใหม่ของโปรเจกต์ หรือต้องการรีเซ็ตตัวแปรสภาพแวดล้อมทั้งหมดในเซสชันของคุณ คุณอาจมีค่าที่ต้อง override หลายสิบค่า
นี่คือที่ที่เมธอด clear() มาช่วย มาลบตัวแปรสภาพแวดล้อมทั้งหมดในเซสชันของเรา:
os.environ.clear() print(os.environ)
โค้ดนี้ล้างค่าของตัวแปรสภาพแวดล้อมทั้งหมด จากนั้น พิมพ์รายการตัวแปรสภาพแวดล้อมทั้งหมดในเซสชันของเรา:
{}
Python ตั้งค่าตัวแปรสภาพแวดล้อมเริ่มต้นบางอย่างซึ่งอาจจำเป็นสำหรับโปรเจกต์ของคุณ
คุณควรใช้เมธอด clear() فقطเมื่อคุณมั่นใจว่าไม่ต้องการตัวแปรสภาพแวดล้อมใดๆ ในโปรแกรมอีกต่อไป การใช้เมธอด pop() ถูกเลือกมากกว่าเพราะมันเฉพาะเจาะจงกว่า
วิธีตั้งค่าตัวแปรสภาพแวดล้อมโดยใช้ Dotenv
ไลบรารี dotenv มีฟังก์ชันที่มีประโยชน์หลายอย่างสำหรับจัดการตัวแปรสภาพแวดล้อม
โดยเฉพาะ dotenv ช่วยให้คุณอ่านตัวแปรสภาพแวดล้อมจากไฟล์ได้ หมายความว่าคุณไม่ต้องประกาศพวกมันภายใน Python shell
การอ่านตัวแปรสภาพแวดล้อมจากไฟล์โมดูลสะดวกกว่าหากคุณมีค่ามากที่ต้องอ่าน มันยังทำให้จัดการตัวแปรมากขึ้นหากคุณต้องการเปลี่ยนค่าของพวกมัน
เพื่อทำงานกับแพ็กเกจ dotenv คุณจะต้องติดตั้งมัน คุณสามารถทำได้โดยใช้ easy_install หรือ pip
มาเริ่มต้นด้วยการกำหนดตัวแปรสภาพแวดล้อม เพื่อทำเช่นนี้ เราจะสร้างไฟล์ชื่อ .env เราสามารถสร้างไฟล์นี้จากบรรทัดคำสั่งโดยใช้คำสั่ง touch:
touch .env
เปิดไฟล์ .env ของคุณและเพิ่มเนื้อหาต่อไปนี้:
AIRTABLE_KEY=YOUR_API_KEY_3
ตัวแปรสภาพแวดล้อมถูกกำหนดเหมือนตัวแปรทั่วไป ด้านซ้ายของเครื่องหมายเท่ากับคุณมีชื่อตัวแปร ด้านขวาคุณมีค่าที่ตัวแปรจะจัดเก็บ สองค่านี้ถูกแยกด้วยเครื่องหมายเท่ากับ
ต่อไป เราจะโหลดตัวแปรของเราเข้าไปในไฟล์:
from dotenv import load_dotenv load_dotenv()
โค้ดนี้ import เมธอด load_dotenv() จากไลบรารี dotenv และ execute มัน จะอ่านตัวแปรทั้งหมดในไฟล์ .env ของเราเข้าไปในสภาพแวดล้อมของเรา
ต่อไป มาลองดึงตัวแปรของเราโดยใช้ไลบรารี os:
import os api_key = os.environ.get("AIRTABLE_KEY") print(api_key) โค้ดของเราคืนค่า: YOUR_API_KEY_3 คีย์ API ของเราถูกตั้งค่าในไฟล์ .env เมธอด load_dotenv() โหลดตัวแปรสภาพแวดล้อมของเราและทำให้เข้าถึงได้โดยใช้เมธอด os.environ
สรุป
ตัวแปรสภาพแวดล้อมเป็นค่าที่กำหนดไว้ล่วงหน้า ซึ่งใช้เพื่อกำหนดค่าภายนอกโปรแกรม พวกมันมักใช้เพื่อตั้งค่าสภาพแวดล้อมที่แตกต่างกัน จึงได้ชื่อว่า ตัวแปรสภาพแวดล้อม
ตัวแปรสภาพแวดล้อมเป็นวิธีที่ปลอดภัยในการตั้งค่าค่าลับ คุณไม่ควรเพิ่มคีย์ API โดยตรงในโค้ดแอปพลิเคชันของคุณ เพราะจะอ่านได้โดยทุกคนที่เห็นแอปพลิเคชันของคุณ คุณสามารถตั้งค่าไว้ในตัวแปรสภาพแวดล้อม เพื่อที่แค่คุณและโปรแกรมของคุณเท่านั้นที่จะเห็นค่า
ตอนนี้คุณพร้อมที่จะเริ่มทำงานกับตัวแปรสภาพแวดล้อมในโค้ด Python อย่างมืออาชีพแล้ว!