پرش به محتویات

متغیرهای محیطی

Tip

اگه از قبل می‌دونی متغیرهای محیطی چی هستن و چطور ازشون استفاده می‌شه، می‌تونی این بخش رو رد کنی.

یه متغیر محیطی (که بهش "env var" هم می‌گن) یه متغیریه که خارج از کد پایتون، توی سیستم‌عامل زندگی می‌کنه و می‌تونه توسط کد پایتونت (یا برنامه‌های دیگه) خونده بشه.

متغیرهای محیطی می‌تونن برای مدیریت تنظیمات برنامه، به‌عنوان بخشی از نصب پایتون و غیره مفید باشن.

ساخت و استفاده از متغیرهای محیطی

می‌تونی متغیرهای محیطی رو توی شل (ترمینال) بسازی و ازشون استفاده کنی، بدون اینکه به پایتون نیاز داشته باشی:

// می‌تونی یه متغیر محیطی به اسم MY_NAME بسازی با
$ export MY_NAME="Wade Wilson"

// بعد می‌تونی با برنامه‌های دیگه ازش استفاده کنی، مثل
$ echo "Hello $MY_NAME"

Hello Wade Wilson
// یه متغیر محیطی به اسم MY_NAME بساز
$ $Env:MY_NAME = "Wade Wilson"

// با برنامه‌های دیگه ازش استفاده کن، مثل
$ echo "Hello $Env:MY_NAME"

Hello Wade Wilson

خوندن متغیرهای محیطی توی پایتون

می‌تونی متغیرهای محیطی رو خارج از پایتون، توی ترمینال (یا با هر روش دیگه) بسازی، و بعد توی پایتون اونا رو بخونی.

مثلاً می‌تونی یه فایل main.py داشته باشی با:

import os

name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")

Tip

آرگومان دوم os.getenv() مقدار پیش‌فرضیه که برمی‌گردونه.

اگه ندی، به‌صورت پیش‌فرض None هست، اینجا ما "World" رو به‌عنوان مقدار پیش‌فرض گذاشتیم.

بعد می‌تونی اون برنامه پایتون رو صدا کنی:

// اینجا هنوز متغیر محیطی رو تنظیم نکردیم
$ python main.py

// چون متغیر محیطی رو تنظیم نکردیم، مقدار پیش‌فرض رو می‌گیریم

Hello World from Python

// ولی اگه اول یه متغیر محیطی بسازیم
$ export MY_NAME="Wade Wilson"

// و بعد دوباره برنامه رو صدا کنیم
$ python main.py

// حالا می‌تونه متغیر محیطی رو بخونه

Hello Wade Wilson from Python
// اینجا هنوز متغیر محیطی رو تنظیم نکردیم
$ python main.py

// چون متغیر محیطی رو تنظیم نکردیم، مقدار پیش‌فرض رو می‌گیریم

Hello World from Python

// ولی اگه اول یه متغیر محیطی بسازیم
$ $Env:MY_NAME = "Wade Wilson"

// و بعد دوباره برنامه رو صدا کنیم
$ python main.py

// حالا می‌تونه متغیر محیطی رو بخونه

Hello Wade Wilson from Python

چون متغیرهای محیطی می‌تونن خارج از کد تنظیم بشن، ولی کد می‌تونه اونا رو بخونه، و لازم نیست با بقیه فایل‌ها ذخیره (کمیتی به git) بشن، معمولاً برای پیکربندی یا تنظیمات استفاده می‌شن.

همچنین می‌تونی یه متغیر محیطی رو فقط برای یه اجرای خاص برنامه بسازی، که فقط برای اون برنامه و فقط برای مدت زمان اجراش در دسترسه.

برای این کار، درست قبل از خود برنامه، توی همون خط بسازش:

// یه متغیر محیطی MY_NAME رو توی خط برای این اجرای برنامه بساز
$ MY_NAME="Wade Wilson" python main.py

// حالا می‌تونه متغیر محیطی رو بخونه

Hello Wade Wilson from Python

// متغیر محیطی بعدش دیگه وجود نداره
$ python main.py

Hello World from Python

Tip

می‌تونی بیشتر در موردش توی برنامه دوازده‌فاکتوری: پیکربندی بخونی.

نوع‌ها و اعتبارسنجی

این متغیرهای محیطی فقط می‌تونن رشته‌های متنی رو نگه دارن، چون خارج از پایتون هستن و باید با برنامه‌های دیگه و بقیه سیستم (و حتی سیستم‌عامل‌های مختلف مثل لینوکس، ویندوز، مک‌اواس) سازگار باشن.

یعنی هر مقداری که توی پایتون از یه متغیر محیطی خونده می‌شه یه str هست، و هر تبدیل به نوع دیگه یا هر اعتبارسنجی باید توی کد انجام بشه.

توی راهنمای کاربر پیشرفته - تنظیمات و متغیرهای محیطی بیشتر در مورد استفاده از متغیرهای محیطی برای مدیریت تنظیمات برنامه یاد می‌گیری.

متغیر محیطی PATH

یه متغیر محیطی خاص به اسم PATH وجود داره که سیستم‌عامل‌ها (لینوکس، مک‌اواس، ویندوز) ازش برای پیدا کردن برنامه‌هایی که قراره اجرا بشن استفاده می‌کنن.

مقدار متغیر PATH یه رشته طولانی از پوشه‌هاست که توی لینوکس و مک‌اواس با دونقطه : و توی ویندوز با نقطه‌ویرگول ; از هم جدا شدن.

مثلاً، متغیر محیطی PATH می‌تونه اینجوری باشه:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

یعنی سیستم باید دنبال برنامه‌ها توی این پوشه‌ها بگرده:

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32

یعنی سیستم باید دنبال برنامه‌ها توی این پوشه‌ها بگرده:

  • C:\Program Files\Python312\Scripts
  • C:\Program Files\Python312
  • C:\Windows\System32

وقتی یه دستور توی ترمینال تایپ می‌کنی، سیستم‌عامل دنبال برنامه توی هر کدوم از این پوشه‌ها که توی متغیر محیطی PATH لیست شدن می‌گرده.

مثلاً، وقتی توی ترمینال python تایپ می‌کنی، سیستم‌عامل دنبال یه برنامه به اسم python توی اولین پوشه توی اون لیست می‌گرده.

اگه پیداش کنه، استفاده‌ش می‌کنه. وگرنه توی پوشه‌های بعدی دنبالش می‌گرده.

نصب پایتون و به‌روزرسانی PATH

وقتی پایتون رو نصب می‌کنی، ممکنه ازت بپرسن آیا می‌خوای متغیر محیطی PATH رو به‌روزرسانی کنی.

فرض کن پایتون رو نصب کردی و توی یه پوشه /opt/custompython/bin قرار گرفته.

اگه بگی بله برای به‌روزرسانی متغیر محیطی PATH، نصاب /opt/custompython/bin رو به متغیر محیطی PATH اضافه می‌کنه.

ممکنه اینجوری بشه:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin

این‌جوری، وقتی توی ترمینال python تایپ می‌کنی، سیستم برنامه پایتون رو توی /opt/custompython/bin (آخرین پوشه) پیدا می‌کنه و از اون استفاده می‌کنه.

فرض کن پایتون رو نصب کردی و توی یه پوشه C:\opt\custompython\bin قرار گرفته.

اگه بگی بله برای به‌روزرسانی متغیر محیطی PATH، نصاب C:\opt\custompython\bin رو به متغیر محیطی PATH اضافه می‌کنه.

C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin

این‌جوری، وقتی توی ترمینال python تایپ می‌کنی، سیستم برنامه پایتون رو توی C:\opt\custompython\bin (آخرین پوشه) پیدا می‌کنه و از اون استفاده می‌کنه.

پس، اگه تایپ کنی:

$ python

سیستم برنامه python رو توی /opt/custompython/bin پیدا می‌کنه و اجراش می‌کنه.

تقریباً معادل اینه که تایپ کنی:

$ /opt/custompython/bin/python

سیستم برنامه python رو توی C:\opt\custompython\bin\python پیدا می‌کنه و اجراش می‌کنه.

تقریباً معادل اینه که تایپ کنی:

$ C:\opt\custompython\bin\python

این اطلاعات وقتی در مورد محیط‌های مجازی یاد می‌گیری به‌دردت می‌خوره.

نتیجه‌گیری

با این باید یه درک پایه‌ای از متغیرهای محیطی و نحوه استفاده‌شون توی پایتون داشته باشی.

می‌تونی بیشتر در موردشون توی ویکی‌پدیا برای متغیر محیطی بخونی.

توی خیلی موارد مشخص نیست که متغیرهای محیطی چطور می‌تونن فوری مفید و کاربردی باشن. ولی توی موقعیت‌های مختلف توسعه مدام پیداشون می‌شه، پس خوبه که در موردشون بدونی.

مثلاً، توی بخش بعدی در مورد محیط‌های مجازی به این اطلاعات نیاز داری.