เชชเชพเชฏเชฅเซ‹เชจ เช…เชจเซ‡ เชฌเซ‡เชถ เชฎเชฟเชคเซเชฐเชคเชพ เชฌเชจเชพเชตเชตเซ€: เชธเซเชฎเชพเชฐเซเชŸ-เชเชจเชตเซ€ เช…เชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจ-เชถเซ‡เชฒ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“

เชฆเชฐเซ‡เช•เชจเซ‡ เชถเซเชญ เชฆเชฟเชตเชธ.

เช†เชœเซ‡, เชชเชพเชฏเชฅเซ‹เชจ เช เชซเช•เซเชค เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เช‰เชคเซเชชเชพเชฆเชจเซ‹ เชœ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชจเซเช‚ เช‡เชจเซเชซเซเชฐเชพเชธเซเชŸเซเชฐเช•เซเชšเชฐ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเชพเชจเชพ เช•เซเชทเซ‡เชคเซเชฐเชฎเชพเช‚ เชธเซŒเชฅเซ€ เชตเชงเซ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ เชญเชพเชทเชพเช“เชฎเชพเช‚เชจเซ€ เชเช• เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช˜เชฃเชพ เชกเซ‡เชตเซ‹เชชเซเชธ, เชคเซ‡เชฎเชจเซ€ เช‡เชšเซเช›เชพเชฅเซ€ เช…เชฅเชตเชพ เชคเซ‡เชจเซ€ เชตเชฟเชฐเซเชฆเซเชง, เชธเชพเชฐเซ€ เชœเซ‚เชจเซ€ เชฌเชพเชถ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹เชจเชพ เชชเซ‚เชฐเช• เชคเชฐเซ€เช•เซ‡ เชชเชพเช›เชณเชฅเซ€ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชจเชตเซ€ เชญเชพเชทเชพ เชถเซ€เช–เชตเซ€ เชชเชกเซ€. เชœเซ‹ เช•เซ‡, เชฌเซ‡เชถ เช…เชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เช•เซ‹เชก เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡ เช…เชฒเช—-เช…เชฒเช— เช…เชญเชฟเช—เชฎเซ‹เชจเซ‹ เชฆเชพเชตเซ‹ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชšเซ‹เช•เซเช•เชธ เชตเชฟเชถเซ‡เชทเชคเชพเช“ เช›เซ‡, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช เชฅเชพเชฏ เช›เซ‡ เช•เซ‡ เชฌเชพเชถ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹เชจเซ‡ "เชธเชพเชชเชจเซ€ เชญเชพเชทเชพ" เชชเชฐ เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเซ€ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เช•เซเชทเชฎเชคเชพเชตเชพเชณเซเช‚ เช…เชจเซ‡ เชคเซเชšเซเช› เช•เชพเชฐเซเชฏเชฅเซ€ เชฆเซ‚เชฐ เชนเซ‹เชฏ เช›เซ‡.

เชกเซ‡เชตเซ‹เชชเซเชธ เชฎเชพเชŸเซ‡ เชœเซ€เชตเชจ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เช˜เชฃเซ€ เช‰เชชเชฏเซ‹เช—เซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เช…เชจเซ‡ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡ เช…เชจเซ‡ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เช›เซ‡. เช† เชฒเซ‡เช– เช† เชชเซ‹เชธเซเชŸเชจเชพ เชฒเซ‡เช–เช• เชฆเซเชตเชพเชฐเชพ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒเซ€ เชฌเซ‡ เชจเชตเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเซ‡ เช›เซ‡ - smart-env ะธ เช…เชœเช—เชฐ-เชถเซ‡เชฒ - เช…เชจเซ‡ เชตเชงเซ เชฐเชธเชชเซเชฐเชฆ เช•เชพเชฐเซเชฏเซ‹ เชฎเชพเชŸเซ‡ เชœเช—เซเชฏเชพ เช›เซ‹เชกเซ€เชจเซ‡, เชชเชพเชฏเชฅเซ‹เชจ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชœเชŸเชฟเชฒเชคเชพเช“ เชชเชฐ เช˜เชฃเซเช‚ เชงเซเชฏเชพเชจ เช†เชชเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเชฅเซ€ เชกเซ‡เชตเซ‹เชชเซเชธเชจเซ‡ เชฐเชพเชนเชค เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชšเชพเชฏเซ‡เชฒ เช›เซ‡. เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“เชจเซ€ เชชเซเชฐเชตเซƒเชคเซเชคเชฟเชจเซ‹ เช…เชตเช•เชพเชถ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒ เช…เชจเซ‡ เชฌเชพเชนเซเชฏ เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเช“ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡.

เช•เซ‹เชˆเชชเชฃ เชฐเชธ เชงเชฐเชพเชตเชจเชพเชฐ, เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชฌเชฟเชฒเชพเชกเซ€ เชœเซเช“.

เชจเชตเซ€ "เชธเชพเชฏเช•เชฒ"?

เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡, เชถเชพ เชฎเชพเชŸเซ‡ เชเช•เชฆเชฎ เชธเชพเชฎเชพเชจเซเชฏ เช•เชพเชฎเช—เซ€เชฐเซ€ เชฎเชพเชŸเซ‡ เชจเชตเชพ เชชเซ‡เช•เซ‡เชœเซ‹ เชฌเชจเชพเชตเซ‹? เชคเชฎเชจเซ‡ os.environ เช…เชจเซ‡ เชธเชฌเชชเซเชฐเซ‹เชธเซ‡เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฅเซ€ เชถเซเช‚ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡.<เชชเชฆเซเชงเชคเชฟ เช…เชฅเชตเชพ เชคเชฎเชพเชฐเซ€ เชชเชธเช‚เชฆเช—เซ€เชจเซ€ เช•เซเชฒเชพเชธ> เชธเซ€เชงเซ€ เชฐเซ€เชคเซ‡?

เชนเซเช‚ เชฆเชฐเซ‡เช• เชชเซเชธเซเชคเช•เชพเชฒเชฏเชจเซ€ เชคเชฐเชซเซ‡เชฃเชฎเชพเช‚ เช…เชฒเช—เชฅเซ€ เชชเซเชฐเชพเชตเชพ เช†เชชเซ€เชถ.

เชธเซเชฎเชพเชฐเซเชŸ-env เชชเซเชธเซเชคเช•เชพเชฒเชฏ

เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชฎเช—เชœเชจเซ€ เช‰เชชเชœเชจเซ‡ เชฒเช–เชคเชพ เชชเชนเซ‡เชฒเชพ, เช“เชจเชฒเชพเชˆเชจ เชœเชตเซเช‚ เช…เชจเซ‡ เชคเซˆเชฏเชพเชฐ เชธเซ‹เชฒเซเชฏเซเชถเชจเซเชธ เชถเซ‹เชงเชตเซเช‚ เช‰เชชเชฏเซ‹เช—เซ€ เช›เซ‡. เช…เชฒเชฌเชคเซเชค, เชคเชฎเชจเซ‡ เชœเซ‡ เชœเซ‹เชˆเช เช›เซ‡ เชคเซ‡ เชจ เชฎเชณเชตเชพเชจเซเช‚ เชœเซ‹เช–เชฎ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เชเช• "เชตเซ€เชฎเชพ เช˜เชŸเชจเชพ" เช›เซ‡. เชเช• เชจเชฟเชฏเชฎ เชคเชฐเซ€เช•เซ‡, เช† เช…เชญเชฟเช—เชฎ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช˜เชฃเซ‹ เชธเชฎเชฏ เช…เชจเซ‡ เชชเซเชฐเชฏเชคเซเชจ เชฌเชšเชพเชตเซ‡ เช›เซ‡.

เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช…เชจเซเชธเชพเชฐ เชถเซ‹เชง เชจเซ€เชšเซ‡เชจเชพ เชœเชพเชนเซ‡เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚:

  • เชเชตเชพ เชชเซ‡เช•เซ‡เชœเซ‹ เช›เซ‡ เชœเซ‡ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ os.environ เชชเชฐ เช•เซ‰เชฒเซเชธเชจเซ‡ เชฒเชชเซ‡เชŸเซ€ เชฆเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ เชตเชฟเชšเชฒเชฟเชค เช•เชฐเชคเซ€ เช•เซเชฐเชฟเชฏเชพเช“เชจเชพ เชธเชฎเซ‚เชนเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡ (เชตเชฐเซเช—เชจเซ‹ เชฆเชพเช–เชฒเซ‹ เชฌเชจเชพเชตเชตเซ‹, เช•เซ‰เชฒเซเชธเชฎเชพเช‚ เชตเชฟเชถเชฟเชทเซเชŸ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชตเช—เซ‡เชฐเซ‡);
  • เชคเซเชฏเชพเช‚ เชธเชพเชฐเชพ เชชเซ‡เช•เซ‡เชœเซ‹ เช›เซ‡, เชœเซ‡, เชœเซ‹ เช•เซ‡, เชšเซ‹เช•เซเช•เชธ เช‡เช•เซ‹เชธเชฟเชธเซเชŸเชฎ (เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชตเซ‡เชฌ เชซเซเชฐเซ‡เชฎเชตเชฐเซเช• เชœเซ‡เชฎ เช•เซ‡ เชœเซ‡เช‚เช—เซ‹) เชธเชพเชฅเซ‡ เชธเช–เชค เชฐเซ€เชคเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชซเชพเช‡เชฒ เชตเชฟเชจเชพ เชฌเชฟเชฒเช•เซเชฒ เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช• เชจเชฅเซ€;
  • เช•เช‚เชˆเช• เชจเชตเซเช‚ เช•เชฐเชตเชพเชจเชพ เชญเชพเช—เซเชฏเซ‡ เชœ เชชเซเชฐเชฏเชคเซเชจเซ‹ เชฅเชพเชฏ เช›เซ‡. เชฆเชพเช–เซเชฒเชพ เชคเชฐเซ€เช•เซ‡, เชŸเชพเช‡เชชเชฟเช‚เช— เช‰เชฎเซ‡เชฐเซ‹ เช…เชจเซ‡ เช•เซ‹เชฒ เชชเชฆเซเชงเชคเชฟเช“ เชœเซ‡เชตเซ€ เช•เซ‡ เชตเซ‡เชฐเชฟเชฏเซ‡เชฌเชฒ เชตเซ‡เชฒเซเชฏเซเชจเซ‡ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชชเชพเชฐเซเชธ เช•เชฐเซ‹
    get_<typename>(var_name)

    เช…เชฅเชตเชพ เช…เชนเซ€เช‚ เชเช• เชตเชงเซ เช‰เช•เซ‡เชฒ, เชœเซ‡, เชœเซ‹ เช•เซ‡, เชนเชตเซ‡ เชฌเชฆเชจเชพเชฎ เชฅเชฏเซ‡เชฒ เชชเชพเชฏเชฅเซ‹เชจ 2 เชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชคเซเช‚ เชจเชฅเซ€ (เชœเซ‡ เช›เชคเชพเช‚ เชธเชคเซเชคเชพเชตเชพเชฐ RIP, เชนเชœเซ เชชเชฃ เชฒเซ‡เช–เชฟเชค เช•เซ‹เชก เช…เชจเซ‡ เชธเชฎเช—เซเชฐ เช‡เช•เซ‹เชธเชฟเชธเซเชŸเชฎเชจเชพ เชชเชฐเซเชตเชคเซ‹ เช›เซ‡);

  • เชคเซเชฏเชพเช‚ เชถเชพเชณเชพ-เชตเชฟเชฆเซเชฏเชพเชฐเซเชฅเซ€ เชนเชธเซเชคเช•เชฒเชพ เช›เซ‡ เชœเซ‡, เช•เซ‡เชŸเชฒเชพเช• เช…เชœเซเชžเชพเชค เช•เชพเชฐเชฃเซ‹เชธเชฐ, เช…เชชเชธเซเชŸเซเชฐเซ€เชฎ PyPI เชฎเชพเช‚ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชซเช•เซเชค เชจเชตเชพ เชชเซ‡เช•เซ‡เชœเซ‹เชจเชพ เชจเชพเชฎเช•เชฐเชฃเชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพ เชŠเชญเซ€ เช•เชฐเซ‡ เช›เซ‡ (เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, "smart-env" เชจเชพเชฎ เชœเชฐเซ‚เชฐเซ€ เชฎเชพเชช เช›เซ‡).

เช…เชจเซ‡ เช† เชฏเชพเชฆเซ€ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เชšเชพเชฒเซ€ เชถเช•เซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช‰เชชเชฐเซ‹เช•เซเชค เชฎเซเชฆเซเชฆเชพเช“ เชฎเชจเซ‡ เช•เช‚เชˆเช• เช…เชจเซเช•เซ‚เชณ เช…เชจเซ‡ เชธเชพเชฐเซเชตเชคเซเชฐเชฟเช• เชฌเชจเชพเชตเชตเชพเชจเชพ เชตเชฟเชšเชพเชฐ เชตเชฟเชถเซ‡ เช‰เชคเซเชธเชพเชนเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเชพ เชนเชคเชพ.

เชœเชฐเซ‚เชฐเซ€เชฏเชพเชคเซ‹ เช•เซ‡ เชœเซ‡ เชธเซเชฎเชพเชฐเซเชŸ-env เชฒเช–เชคเชพ เชชเชนเซ‡เชฒเชพ เชธเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€:

  • เชธเซŒเชฅเซ€ เชธเชฐเชณ เช‰เชชเชฏเซ‹เช— เชฏเซ‹เชœเชจเชพ
  • เชธเชฐเชณเชคเชพเชฅเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชค เชกเซ‡เชŸเชพ เชŸเชพเช‡เชชเชฟเช‚เช— เชธเชชเซ‹เชฐเซเชŸ
  • Python 2.7 เชธเซเชธเช‚เช—เชค
  • เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชฆเซเชตเชพเชฐเชพ เชธเชพเชฐเซเช‚ เช•เซ‹เชก เช•เชตเชฐเซ‡เชœ

เช†เช–เชฐเซ‡ เช† เชฌเชงเซเช‚ เชธเชฎเชœเชพเชฏเซเช‚. เช…เชนเซ€เช‚ เช‰เชชเชฏเซ‹เช—เชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡:

from smart_env import ENV

print(ENV.HOME)  # Equals print(os.environ['HOME'])

# assuming you set env variable MYVAR to "True"

ENV.enable_automatic_type_cast()

my_var = ENV.MY_VAR  # Equals boolean True

ENV.NEW_VAR = 100  # Sets a new environment variable

เชœเซ‡เชฎ เชคเชฎเซ‡ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชจเชตเชพ เชตเชฐเซเช— เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชซเช•เซเชค เชคเซ‡เชจเซ‡ เช†เชฏเชพเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ (เชคเชฎเชพเชฐเซ‡ เช•เซ‹เชˆ เชฆเชพเช–เชฒเซ‹ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ - เชตเชงเชพเชฐเชพเชจเซ€ เช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชฌเชพเชฆ เช•เชฐเซ‹). เช•เซ‹เชˆเชชเชฃ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชšเชฒเชจเซ€ เชเช•เซเชธเซ‡เชธ เชคเซ‡เชจเซ‡ ENV เชตเชฐเซเช—เชจเชพ เชšเชฒ เชคเชฐเซ€เช•เซ‡ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เชœเซ‡ เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เช† เชตเชฐเซเช—เชจเซ‡ เชฎเซ‚เชณ เชธเชฟเชธเซเชŸเชฎ เชชเชฐเซเชฏเชพเชตเชฐเชฃ เชฎเชพเชŸเซ‡ เชธเชพเชนเชœเชฟเช• เช†เชตเชฐเชฃ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡ เชธเชพเชฅเซ‡ เชœ เชคเซ‡เชจเซ‡ เชฒเช—เชญเช— เช•เซ‹เชˆเชชเชฃ เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชŸเซ‡ เชธเช‚เชญเชตเชฟเชค เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช‘เชฌเซเชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชซเซ‡เชฐเชตเซ‡ เช›เซ‡. เชเช• เชธเชฎเชพเชจ เช…เชญเชฟเช—เชฎ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, Django เชฎเชพเช‚ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡, เชซเช•เซเชค เชคเซเชฏเชพเช‚ เช—เซ‹เช เชตเชฃเซ€ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เช เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชฎเซ‹เชกเซเชฏเซเชฒ/เชชเซ‡เช•เซ‡เชœ เช›เซ‡).

เชธเซเชตเชšเชพเชฒเชฟเชค เชŸเชพเช‡เชชเชฟเช‚เช— เชธเชชเซ‹เชฐเซเชŸ เชฎเซ‹เชกเชจเซ‡ เชธเช•เซเชทเชฎ/เช…เช•เซเชทเชฎ เช•เชฐเชตเซเช‚ เช เชฌเซ‡ เชชเชฆเซเชงเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡ - enable_automatic_type_cast() เช…เชจเซ‡ disable_automatic_type_cast(). เชœเซ‹ เชเชจเซเชตเชพเชฏเชฐเซเชจเชฎเซ‡เชจเซเชŸ เชตเซ‡เชฐเซ€เชเชฌเชฒเชฎเชพเช‚ เชธเซ€เชฐเซ€เชฏเชฒเชพเช‡เชเซเชก JSON-เชœเซ‡เชตเชพ เช‘เชฌเซเชœเซ‡เช•เซเชŸ เช…เชฅเชตเชพ เชคเซ‹ เชฎเชพเชคเซเชฐ เชฌเซเชฒเชฟเชฏเชจ เช•เซ‹เชจเซเชธเซเชŸเชจเซเชŸ เชนเซ‹เชฏ เชคเซ‹ เช† เช…เชจเซเช•เซ‚เชณ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡ (เชเชตเชพเชฎเชพเชจเซเชฏ เชตเซ‡เชฐเซ€เชเชฌเชฒเชจเซ‡ "เชฎเชพเชจเซเชฏ" เชธเซเชŸเซเชฐเชฟเช‚เช—เซเชธ เชธเชพเชฅเซ‡ เชธเชฐเช–เชพเชตเซ€เชจเซ‡ Djangoเชฎเชพเช‚ DEBUG เชตเซ‡เชฐเชฟเชฏเซ‡เชฌเชฒเชจเซ‡ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เช เชธเซŒเชฅเซ€ เชธเชพเชฎเชพเชจเซเชฏ เช•เซ‡เชธเซ‹เชฎเชพเช‚เชจเซเช‚ เชเช• เช›เซ‡). เชชเชฐเช‚เชคเซ เชนเชตเซ‡ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เชถเชฌเซเชฆเชฎเชพเชณเชพเช“เชจเซ‡ เช•เชจเซเชตเชฐเซเชŸ เช•เชฐเชตเชพเชจเซ€ เช•เซ‹เชˆ เชœเชฐเซ‚เชฐ เชจเชฅเซ€ - เชฎเซ‹เชŸเชพเชญเชพเช—เชจเซ€ เชœเชฐเซ‚เชฐเซ€ เช•เซเชฐเชฟเชฏเชพเช“ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ€ เชŠเช‚เชกเชพเชˆเชฎเชพเช‚ เชเชฎเซเชฌเซ‡เชก เช•เชฐเซ‡เชฒเซ€ เช›เซ‡ เช…เชจเซ‡ เชฎเชพเชคเซเชฐ เช•เชพเชฐเซเชฏ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ เชธเช‚เช•เซ‡เชคเชจเซ€ เชฐเชพเชน เชœเซ‹เชˆ เชฐเชนเซ€ เช›เซ‡. ๐Ÿ™‚ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชŸเชพเช‡เชชเชฟเช‚เช— เชชเชพเชฐเชฆเชฐเซเชถเช• เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชฒเช—เชญเช— เชคเชฎเชพเชฎ เช‰เชชเชฒเชฌเซเชง เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเซ‹เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ (เชซเซเชฐเซ‹เชเชจเชธเซ‡เชŸ, เชœเชŸเชฟเชฒ เช…เชจเซ‡ เชฌเชพเช‡เชŸเซเชธเชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชจ เชนเชคเซเช‚).

เชชเชพเชฏเชฅเซ‹เชจ 2 เชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชค เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฐเซ€เชคเซ‡ เช•เซ‹เชˆ เชฌเชฒเชฟเชฆเชพเชจ เชตเชฟเชจเชพ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ (เชŸเชพเชˆเชชเชฟเช‚เช—เชจเซ‹ เชคเซเชฏเชพเช— เช…เชจเซ‡ เชชเชพเชฏเชฅเซ‹เชจ 3 เชจเชพ เชจเชตเซ€เชจเชคเชฎ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ€ เช•เซ‡เชŸเชฒเซ€เช• "เชธเซเช—เชฐ เช•เซ‡เชจเซเชกเซ€เช"), เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชธเชฐเซเชตเชตเซเชฏเชพเชชเช• เช› (เชฎเซ‡เชŸเชพเช•เซเชฒเชพเชธเซ€เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชนเชฒ เช•เชฐเชตเชพ) เชฎเชพเชŸเซ‡ เช†เชญเชพเชฐ. .

เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเชพเช• เชชเซเชฐเชคเชฟเชฌเช‚เชงเซ‹ เช›เซ‡:

  • เชชเชพเชฏเชฅเซ‹เชจ 3 เชธเชชเซ‹เชฐเซเชŸเชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เชตเชฐเซเชเชจ 3.5 เช…เชจเซ‡ เช‰เชšเซเชš (เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชคเซ‡เชฎเชจเซ€ เชนเชพเชœเชฐเซ€ เช•เชพเช‚ เชคเซ‹ เช†เชณเชธ เช…เชฅเชตเชพ เชธเซเชงเชพเชฐเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเชจเชพ เช…เชญเชพเชตเชจเซเช‚ เชชเชฐเชฟเชฃเชพเชฎ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชคเชฎเซ‡ เชนเชœเซ เชชเชฃ 3.4 เชชเชฐ เช•เซ‡เชฎ เช›เซ‹ เชคเซ‡เชจเซเช‚ เช‰เชฆเซเชฆเซ‡เชถเซเชฏ เช•เชพเชฐเชฃ เชธเชพเชฅเซ‡ เช†เชตเชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡);
  • Python 2.7 เชฎเชพเช‚, เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชธเซ‡เชŸ เชฒเชฟเชŸเชฐเชฒเซเชธเชจเชพ เชกเซ€เชธเซ€เชฐเชฟเชฏเชฒเชพเชˆเชเซ‡เชถเชจเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซ€ เชจเชฅเซ€. เชตเชฐเซเชฃเชจ เช…เชนเซ€เช‚. เชชเชฐเช‚เชคเซ เชœเซ‹ เช•เซ‹เชˆ เชคเซ‡เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡, เชคเซ‹ เชคเชฎเชพเชฐเซเช‚ เชธเซเชตเชพเช—เชค เช›เซ‡ :);

เชชเชพเชฐเซเชธเชฟเช‚เช— เชญเซ‚เชฒเซ‹เชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชชเซเชธเซเชคเช•เชพเชฒเชฏเชฎเชพเช‚ เช…เชชเชตเชพเชฆ เชชเชฆเซเชงเชคเชฟ เชชเชฃ เช›เซ‡. เชœเซ‹ เช•เซ‹เชˆ เชชเชฃ เช‰เชชเชฒเชฌเซเชง เชตเชฟเชถเซเชฒเซ‡เชทเช•เซ‹ เชฆเซเชตเชพเชฐเชพ เชธเซเชŸเซเชฐเชฟเช‚เช—เชจเซ‡ เช“เชณเช–เซ€ เชจ เชถเช•เชพเชฏ, เชคเซ‹ เชฎเซ‚เชฒเซเชฏ เชเช• เชธเซเชŸเซเชฐเชฟเช‚เช— เชœ เชฐเชนเซ‡ เช›เซ‡ (เชฌเชฆเชฒเซ‡, เชฌเซ…เชถเชฎเชพเช‚ เชšเชฒเซ‹ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เชคเชฐเซเช• เชธเชพเชฅเซ‡ เช…เชจเซเช•เซ‚เชณเชคเชพ เช…เชจเซ‡ เชชเช›เชพเชค เชธเซเชธเช‚เช—เชคเชคเชพเชจเชพ เช•เชพเชฐเชฃเซ‹เชธเชฐ).

เชชเชพเชฏเชฅเซ‹เชจ-เชถเซ‡เชฒ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€

เชนเชตเซ‡ เชนเซเช‚ เชคเชฎเชจเซ‡ เชฌเซ€เชœเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชตเชฟเชถเซ‡ เช•เชนเซ€เชถ (เชนเซเช‚ เชนเชพเชฒเชจเชพ เชเชจเชพเชฒเซ‹เช—เชจเซ€ เช–เชพเชฎเซ€เช“เชจเซเช‚ เชตเชฐเซเชฃเชจ เช›เซ‹เชกเซ€เชถ - เชคเซ‡ เชธเซเชฎเชพเชฐเซเชŸ-เชเชจเซเชต. เชเชจเชพเชฒเซ‹เช— เชฎเชพเชŸเซ‡ เชตเชฐเซเชฃเชตเซ‡เชฒ เชธเชฎเชพเชจ เช›เซ‡. เช…เชนเซ€เช‚ ะธ เช…เชนเซ€เช‚).

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช…เชฎเชฒเซ€เช•เชฐเชฃเชจเซ‹ เชตเชฟเชšเชพเชฐ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡เชจเซ€ เช†เชตเชถเซเชฏเช•เชคเชพเช“ เชธเซเชฎเชพเชฐเซเชŸ-เชเชจเชตเซ€ เชฎเชพเชŸเซ‡ เชตเชฐเซเชฃเชตเซ‡เชฒ เชธเชฎเชพเชจ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡:

from python_shell import Shell

Shell.ls('-l', '$HOME')  # Equals "ls -l $HOME"

command = Shell.whoami()  # Equals "whoami"
print(command.output)  # prints your current user name

print(command.command)  # prints "whoami"
print(command.return_code)  # prints "0"
print(command.arguments)  # prints ""

Shell.mkdir('-p', '/tmp/new_folder')  # makes a new folder

เชตเชฟเชšเชพเชฐ เช† เช›เซ‡:

  1. เชเช• เชตเชฐเซเช— เช•เซ‡ เชœเซ‡ เชชเชพเชฏเชฅเซ‹เชจ เชตเชฟเชถเซเชตเชฎเชพเช‚ เชฌเซ‡เชถเชจเซเช‚ เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เช•เชฐเซ‡ เช›เซ‡;
  2. เชฆเชฐเซ‡เช• เชฌเชพเชถ เช•เชฎเชพเชจเซเชกเชจเซ‡ เชถเซ‡เชฒ เช•เซเชฒเชพเชธเชจเชพ เชซเช‚เช•เซเชถเชจ เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡;
  3. เชฆเชฐเซ‡เช• เชซเช‚เช•เซเชถเชจ เช•เซ‰เชฒ เชฎเชพเชŸเซ‡เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹ เชชเช›เซ€ เช…เชจเซเชฐเซ‚เชช Bash เช†เชฆเซ‡เชถ เช•เซ‰เชฒเชฎเชพเช‚ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡;
  4. เชฆเชฐเซ‡เช• เช†เชฆเซ‡เชถ "เช…เชนเซ€เช‚ เช…เชจเซ‡ เชนเชตเซ‡" เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ เช•เซเชทเชฃเซ‡ เชคเซ‡เชจเซ‡ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. เชธเชฟเช‚เช•เซเชฐเชจเชธ เช…เชญเชฟเช—เชฎ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡;
  5. stdout เชฎเชพเช‚ เช†เชฆเซ‡เชถเชจเชพ เช†เช‰เชŸเชชเซเชŸ เชคเซ‡เชฎเชœ เชคเซ‡เชจเชพ เชฐเซ€เชŸเชฐเซเชจ เช•เซ‹เชกเชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชตเซเช‚ เชถเช•เซเชฏ เช›เซ‡;
  6. เชœเซ‹ เช†เชฆเซ‡เชถ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชจเชฅเซ€, เชคเซ‹ เช…เชชเชตเชพเชฆ เชซเซ‡เช‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

smart-env เชจเซ€ เชœเซ‡เชฎ, Python 2 เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช›เซ‡ (เชœเซ‹เช•เซ‡ เชฅเซ‹เชกเซ€ เชตเชงเซ เชฌเชฒเชฟเชฆเชพเชจเชจเซ€ เชœเชฐเซ‚เชฐ เชนเชคเซ€) เช…เชจเซ‡ Python 3.0-3.4 เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชธเชชเซ‹เชฐเซเชŸ เชจเชฅเซ€.

เชชเซเชธเซเชคเช•เชพเชฒเชฏ เชตเชฟเช•เชพเชธ เชฏเซ‹เชœเชจเชพเช“

เชคเชฎเซ‡ เชนเชตเซ‡ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹: เชฌเช‚เชจเซ‡ เชธเชคเซเชคเชพเชตเชพเชฐ PyPI เชชเชฐ เชชเซ‹เชธเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เช›เซ‡. เชธเซเชคเซเชฐเซ‹เชคเซ‹ Github เชชเชฐ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ (เชจเซ€เชšเซ‡ เชœเซเช“).

เชฐเชธ เชงเชฐเชพเชตเชคเชพ เชฒเซ‹เช•เซ‹ เชชเชพเชธเซ‡เชฅเซ€ เชเช•เชคเซเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชชเซเชฐเชคเชฟเชธเชพเชฆเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเชจเซ‡ เชฌเช‚เชจเซ‡ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹ เชตเชฟเช•เชธเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช…เชจเซ‡, เชœเซ‹ เชธเซเชฎเชพเชฐเซเชŸ-เชเชจเชตเซ€เชฎเชพเช‚ เชตเชฟเชตเชฟเชง เชชเซเชฐเช•เชพเชฐเชจเซ€ เชจเชตเซ€ เชธเซเชตเชฟเชงเชพเช“ เชธเชพเชฅเซ‡ เช†เชตเชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เชนเซ‹เชˆ เชถเช•เซ‡, เชคเซ‹ เชชเชพเชฏเชฅเซ‹เชจ-เชถเซ‡เชฒเชฎเชพเช‚ เชšเซ‹เช•เซเช•เชธเชชเชฃเซ‡ เช‰เชฎเซ‡เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฌเซ€เชœเซเช‚ เช•เช‚เชˆเช• เช›เซ‡:

  • เชจเซ‹เชจ-เชฌเซเชฒเซ‹เช•เซ€เช‚เช— เช•เซ‹เชฒเซเชธ เชฎเชพเชŸเซ‡ เช†เชงเชพเชฐ;
  • เชŸเซ€เชฎ เชธเชพเชฅเซ‡ เช‡เชจเซเชŸเชฐเซ‡เช•เซเชŸเชฟเชต เช•เชฎเซเชฏเซเชจเชฟเช•เซ‡เชถเชจเชจเซ€ เชถเช•เซเชฏเชคเชพ (stdin เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเซเช‚);
  • เชจเชตเซ€ เช—เซเชฃเชงเชฐเซเชฎเซ‹ เช‰เชฎเซ‡เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, stderr เชฎเชพเช‚เชฅเซ€ เช†เช‰เชŸเชชเซเชŸ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฎเชฟเชฒเช•เชค);
  • เช‰เชชเชฒเชฌเซเชง เช†เชฆเซ‡เชถเซ‹เชจเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซเช‚ เช…เชฎเชฒเซ€เช•เชฐเชฃ (dir() เชซเช‚เช•เซเชถเชจ เชธเชพเชฅเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡);
  • เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชชเชฐ

เชธเช‚เชฆเชฐเซเชญเซ‹

  1. เชธเซเชฎเชพเชฐเซเชŸ-เชเชจเชตเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€: Github ะธ เชชเซ€.เชชเซ€.เชชเซ€.
  2. เชชเชพเชฏเชฅเซ‹เชจ-เชถเซ‡เชฒ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€: Github ะธ เชชเซ€.เชชเซ€.เชชเซ€.
  3. เชŸเซ‡เชฒเชฟเช—เซเชฐเชพเชฎ เชšเซ‡เชจเชฒ เชชเซเชธเซเชคเช•เชพเชฒเชฏ เช…เชชเชกเซ‡เชŸเซเชธ

UPD 23.02.2020/XNUMX/XNUMX:
* เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เช เช–เชธเซ‡เชกเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เช…เชจเซเชฐเซ‚เชช เชฒเชฟเช‚เช•เซเชธ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡
* python-shell==1.0.1 เชธเช‚เชธเซเช•เชฐเชฃ 29.02.2020/XNUMX/XNUMX เชจเชพ เชฐเซ‹เชœ เชฐเชฟเชฒเซ€เช เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เชซเซ‡เชฐเชซเชพเชฐเซ‹เชฎเชพเช‚ เช†เชฆเซ‡เชถ เชธเซเชตเชคเชƒเชชเซ‚เชฐเซเชฃ เช…เชจเซ‡ dir(Shell) เช†เชฆเซ‡เชถ, เช…เชฎเชพเชจเซเชฏ Python เช“เชณเช–เช•เชฐเซเชคเชพ เชธเชพเชฅเซ‡ เชšเชพเชฒเชคเชพ เช†เชฆเซ‡เชถเซ‹ เช…เชจเซ‡ เชฌเช— เชซเชฟเช•เซเชธเซ‡เชธเชจเซ‹ เชธเชฎเชพเชตเซ‡เชถ เชฅเชพเชฏ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹