ืžืึทื›ืŸ ืคึผื™ื˜ื”ืึธืŸ ืื•ืŸ ื‘ืึทืฉ ืคืจืขื ื“ืฉื™ืคึผ: ืกืžืึทืจื˜-ืขื ื•ื• ืื•ืŸ ืคึผื™ื˜ื”ืึธืŸ-ืฉืึธืœ ืœื™ื™ื‘ืจืขืจื™ื–

ื’ื•ื˜ืŸ ื˜ืึธื’ ืึทืœืขืžืขืŸ.

ื”ื™ื™ึทื ื˜, Python ืื™ื– ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืžืขืจืกื˜ ื’ืขื•ื•ื™ื™ื ื˜ ืฉืคึผืจืึทื›ืŸ ืื™ืŸ ื“ื™ ืคืขืœื“ ืคื•ืŸ ืงืจื™ื™ื™ื˜ื™ื ื’ ื ื™ื˜ ื‘ืœื•ื™ื– ื•ื•ื™ื™ื›ื•ื•ืืจื’ ืคึผืจืึธื“ื•ืงื˜ืŸ ื–ื™ืš, ืึธื‘ืขืจ ืื•ื™ืš ืคึผืจืึทื•ื•ื™ื™ื“ื™ื ื’ ื–ื™ื™ืขืจ ื™ื ืคืจืึทืกื˜ืจืึทืงื˜ืฉืขืจ. ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜, ื”ืึธื‘ืŸ ืคื™ืœืข ื“ืขื•ื•ืึธืคึผืก, ืฆื™ ืžื™ื˜ ื–ื™ื™ืขืจ ื•ื•ื™ืœืŸ ืึธื“ืขืจ ืงืขื’ืŸ ืื™ื, ื’ืขืžื•ื–ื˜ ืœืขืจื ืขืŸ ืึท ื ื™ื™ึทืข ืฉืคึผืจืึทืš ืคึฟืึทืจ ืฉืคึผืขื˜ืขืจ ื ื•ืฆืŸ ื•ื•ื™ ืึท ื”ืขืกืึธืคืข ืฆื• ื“ื™ ื’ื•ื˜ ืึทืœื˜ ื‘ืึทืฉ ืฉืจื™ืคื˜. ืึธื‘ืขืจ, Bash ืื•ืŸ Python ื’ืœื™ื™ื‘ืŸ ืคืึทืจืฉื™ื“ืขื ืข ืึทืคึผืจืึธื•ื˜ืฉื™ื– ืฆื• ืฉืจื™ื™ื‘ืŸ ืงืึธื“ ืื•ืŸ ื”ืึธื‘ืŸ ื–ื™ื›ืขืจ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ, ื˜ื™ื™ึทื˜ืฉ ืึทื– ืคึผืึธืจื˜ื™ื ื’ ื‘ืึทืฉ ืกืงืจื™ืคึผืก ืฆื• ื“ื™ "ืฉืœืึทื ื’ ืฉืคึผืจืึทืš" ืžืืœ ื˜ื•ืจื ืก ืื•ื™ืก ืฆื• ื–ื™ื™ืŸ ืึท ื’ื•ื•ืึทืœื“ื™ืง ืื•ืŸ ื•ื•ื™ื™ึทื˜ ืคื•ืŸ ื ื™ืฉื˜ื™ืง ืึทืจื‘ืขื˜.

ืฆื• ืžืึทื›ืŸ ืœืขื‘ืŸ ื’ืจื™ื ื’ืขืจ ืคึฟืึทืจ ื“ืขื•ื•ืึธืคึผืก, ืคื™ืœืข ื ื•ืฆื™ืง ืœื™ื™ื‘ืจืขืจื™ื– ืื•ืŸ ื™ื•ื˜ื™ืœืึทื˜ื™ื– ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ ื–ืขื ืขืŸ ื‘ืืฉืืคืŸ ืื•ืŸ ืคืึธืจื–ืขืฆืŸ ืฆื• ื–ื™ื™ืŸ ื‘ืืฉืืคืŸ. ื“ืขืจ ืึทืจื˜ื™ืงืœ ื‘ืืฉืจื™ื™ื‘ื˜ ืฆื•ื•ื™ื™ ื ื™ื™ึทืข ืœื™ื™ื‘ืจืขืจื™ื– ื‘ืืฉืืคืŸ ื“ื•ืจืš ื“ืขื ืžื—ื‘ืจ ืคื•ืŸ ื“ืขื ืคึผืึธืกื˜ืŸ - smart-env ะธ ืคึผื™ื˜ื”ืึธืŸ-ืฉืึธืœ - ืื•ืŸ ื“ื™ื–ื™ื™ื ื“ ืฆื• ื‘ืึทืคืจื™ื™ึทืขืŸ ื“ื™ื•ื•ืึธืคึผืก ืคื•ืŸ ื“ื™ ื ื•ื™ื˜ ืฆื• ื‘ืึทืฆืึธืœืŸ ืึท ืคึผืœืึทืฅ ืคื•ืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ื˜ ืฆื• ื“ื™ ื™ื ื˜ืจืึทืงืึทืกื™ื– ืคื•ืŸ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืคึผื™ื˜ื”ืึธืŸ, ืื•ืŸ ืœืึธื–ืŸ ืคึผืœืึทืฅ ืคึฟืึทืจ ืžืขืจ ื˜ืฉื™ืงืึทื•ื•ืข ื˜ืึทืกืงืก. ื“ืขืจ ืคืึทืจื ืขื ืคื•ืŸ ื˜ืขื˜ื™ืงื™ื™ื˜ ืคื•ืŸ ืœื™ื™ื‘ืจืขืจื™ื– ืื™ื– ื™ื ื•ื•ื™ื™ืจืึทื ืžืขื ืึทืœ ื•ื•ืขืจื™ืึทื‘ืึทืœื– ืื•ืŸ ืœืึธื ื˜ืฉื™ื ื’ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื™ื•ื˜ื™ืœืึทื˜ื™ื–.

ื•ื•ืขืจ ืขืก ื™ื– ืื™ื ื˜ืขืจืขืกื™ืจื˜, ื‘ื™ื˜ืข ื–ืขืŸ ืงืึทืฅ.

ื ื™ื™ืข "ื‘ื™ืกื™ืงืœืขืก"?

ืขืก ื•ื•ืึธืœื˜ ื•ื™ืกืงื•ืžืขืŸ, ื•ื•ืึธืก ืžืึทื›ืŸ ื ื™ื™ึท ืคึผืึทืงืึทื“ื–ืฉืึทื– ืคึฟืึทืจ ืคืขืจืœื™ ืคึผืจืึธืกื˜ ืึทืคึผืขืจื™ื™ืฉืึทื ื–? ื•ื•ืึธืก ืคึผืจื™ื•ื•ืขื ืฅ ืื™ืจ ืคื•ืŸ ื ื™ืฆืŸ ืึธืก.ืขื ื•ื•ื™ืจืึธืŸ ืื•ืŸ ืกื•ื‘ืคึผืจืึธืกืขืกืก.<ืžืขื˜ืึธื“ ืึธื“ืขืจ ืงืœืึทืก ืคื•ืŸ ื“ื™ื™ืŸ ื‘ืจื™ืจื”> ื’ืœื™ื™ึทืš?

ืื™ืš ื•ื•ืขืœ ื’ืขื‘ืŸ ืขื“ื•ืช ืื™ืŸ ื˜ื•ื™ื•ื•ืข ืคื•ืŸ โ€‹โ€‹ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื‘ืึทื–ื•ื ื“ืขืจ.

ืกืžืึทืจื˜-ืขื ื•ื• ื‘ื™ื‘ืœื™ืึธื˜ืขืง

ืื™ื™ื“ืขืจ ืฉืจื™ื™ื‘ืŸ ื“ื™ื™ืŸ ืื™ื™ื’ืขื ืข ื‘ืจื™ื™ื ื˜ืฉื™ื™ืœื“, ืขืก ืื™ื– ื ื•ืฆื™ืง ืฆื• ื’ื™ื™ืŸ ืึธื ืœื™ื™ืŸ ืื•ืŸ ื–ื•ื›ืŸ ืคึฟืึทืจ ืคืึทืจื˜ื™ืง ืกืึทืœื•ืฉืึทื ื–. ืคื•ืŸ ืงื•ืจืก, ืขืก ืื™ื– ืึท ืจื™ื–ื™ืงื™ืจืŸ ืคื•ืŸ ื ื™ื˜ ื’ืขืคึฟื™ื ืขืŸ ื•ื•ืึธืก ืื™ืจ ื“ืึทืจืคึฟืŸ, ืึธื‘ืขืจ ื“ืึธืก ืื™ื– ื’ืึทื ืฅ ืึท "ืคืึทืจื–ื™ื›ืขืจื•ื ื’ ื’ืขืฉืขืขื ื™ืฉ". ื•ื•ื™ ืึท ื”ืขืจืฉืŸ, ื“ืขื ืฆื•ื’ืึทื ื’ ืึทืจื‘ืขื˜ ืื•ืŸ ืกืึทื•ื•ืขืก ืึท ืคึผืœืึทืฅ ืคื•ืŸ ืฆื™ื™ื˜ ืื•ืŸ ืžื™.

ืœื•ื™ื˜ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ื–ื•ื›ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืื™ื– ืื ื˜ืคืœืขืงื˜ ื’ืขื•ื•ืืจืŸ:

  • ืขืก ื–ืขื ืขืŸ ืคึผืึทืงืึทื“ื–ืฉืึทื– ื•ื•ืึธืก ืึทืงืฉืœื™ ื™ื™ึทื ื•ื•ื™ืงืœืขืŸ ืงืึทืœืœืก ืฆื• os.environ, ืึธื‘ืขืจ ืื™ืŸ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ ืฆื™ื™ึทื˜ ื“ืึทืจืคืŸ ืึท ื‘ื™ื ื˜ืœ ืคื•ืŸ ื“ื™ืกื˜ืจืึทืงื˜ื™ื ื’ ืึทืงืฉืึทื ื– (ืฉืืคืŸ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ ืคื•ืŸ ืึท ืงืœืึทืก, ืกืคึผืขืฆื™ืขืœ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืื™ืŸ ืงืึทืœืœืก, ืืื–"ื• ื•);
  • ืขืก ื–ืขื ืขืŸ ื’ื•ื˜ ืคึผืึทืงืึทื“ื–ืฉืึทื–, ื•ื•ืึธืก, ืึธื‘ืขืจ, ื–ืขื ืขืŸ ืฉื˜ืจืขื ื’ ื˜ื™ื™ื“ ืฆื• ืึท ืกืคึผืขืฆื™ืคื™ืฉ ื™ืงืึธื•ืกื™ืกื˜ืึทื (ื“ืขืจ ื”ื•ื™ืคึผื˜ ื•ื•ืขื‘ ืคืจืึทืžืขื•ื•ืึธืจืงืก ื•ื•ื™ ื“ื“ื–ืฉืึทื ื’ืึธ) ืื•ืŸ ื“ืขืจื™ื‘ืขืจ ื–ืขื ืขืŸ ื ื™ืฉื˜ ื•ื ื™ื•ื•ืขืจืกืึทืœ ืึธืŸ ืึท ื˜ืขืงืข;
  • ืขืก ื–ืขื ืขืŸ ื–ืขืœื˜ืŸ ืคืจื•ื•ื•ืŸ ืฆื• ื˜ืึธืŸ ืขืคึผืขืก ื ื™ื™ึท. ืœืžืฉืœ, ืœื™ื™ื’ืŸ ื˜ื™ื™ืคึผื™ื ื’ ืื•ืŸ ื‘ืคื™ืจื•ืฉ ืคึผืึทืจืก ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ื•ื•ืึทืœื•ืขืก ื“ื•ืจืš ืคืึทืš ืžืขื˜ื”ืึธื“ืก ื•ื•ื™
    get_<typename>(var_name)

    ืึธื“ืขืจ ื“ืึธ ืื™ื™ื ืขืจ ืžืขืจ ืœื™ื™ื–ื•ื ื’, ื•ื•ืึธืก, ืึธื‘ืขืจ, ืฉื˜ื™ืฆื˜ ื ื™ืฉื˜ ื“ื™ ืื™ืฆื˜ ืฉืึทื ื“ ืคึผื™ื˜ื”ืึธืŸ 2 (ื•ื•ืึธืก, ื˜ืจืึธืฅ ื‘ืึทืึทืžื˜ืขืจ RIP, ืขืก ื–ืขื ืขืŸ ื ืึธืš ื‘ืขืจื’ ืคื•ืŸ ื’ืขืฉืจื™ื‘ืŸ ืงืึธื“ ืื•ืŸ ื’ืึทื ืฅ ื™ืงืึธื•ืกื™ืกื˜ืึทืžื–);

  • ืขืก ื–ืขื ืขืŸ ืฉื•ืœืข-ืกื˜ื•ื“ืขื ื˜ ืงืจืึทืคืก ื•ื•ืึธืก, ืคึฟืึทืจ ืขื˜ืœืขื›ืข ืื•ืžื‘ืึทืงืึทื ื˜ ืกื™ื‘ื”, ืขื ื“ื™ืงื˜ ื–ื™ืš ืื™ืŸ ื“ื™ ืึทืคึผืกื˜ืจื™ื PyPI ืื•ืŸ ื‘ืœื•ื™ื– ืžืึทื›ืŸ ืคึผืจืึธื‘ืœืขืžืก ืžื™ื˜ ื“ื™ ื ืึทืžื™ื ื’ ืคื•ืŸ ื ื™ื™ึทืข ืคึผืึทืงืึทื“ื–ืฉืึทื– (ืื™ืŸ ื‘ืึทื–ื•ื ื“ืขืจ, ื“ื™ ื ืึธืžืขืŸ "ืกืžืึทืจื˜-ืขื ื•ื•" ืื™ื– ืึท ื ื™ื™ื˜ื™ืง ืžืึธืก).

ืื•ืŸ ื“ืขื ืจืฉื™ืžื” ืงืขื ืขืŸ ืคืึธืจื–ืขืฆืŸ ืคึฟืึทืจ ืึท ืœืึทื ื’ ืฆื™ื™ึทื˜. ืึธื‘ืขืจ, ื“ื™ ืื•ื™ื‘ืŸ ื•ื•ื™ื™ื–ื˜ ื–ืขื ืขืŸ ื’ืขื ื•ื’ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืžื™ืจ ื™ืงืกื™ื™ื˜ืึทื“ ื•ื•ืขื’ืŸ ื“ืขื ื’ืขื“ืึทื ืง ืคื•ืŸ ืžืึทื›ืŸ ืขืคึผืขืก ื‘ืึทืงื•ื•ืขื ืื•ืŸ ื•ื ื™ื•ื•ืขืจืกืึทืœ.

ืจืขืงื•ื•ื™ืจืขืžืขื ืฅ ื•ื•ืึธืก ื–ืขื ืขืŸ ื‘ืึทืฉื˜ื™ืžื˜ ืื™ื™ื“ืขืจ ืฉืจื™ื™ื‘ืŸ smart-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-ื•ื•ื™ ื›ื™ื™ืคืขืฅ ืึธื“ืขืจ ืืคื™ืœื• ื ืึธืจ ืึท ื‘ืึธืึธืœืขืึทืŸ ืงืขืกื™ื™ื“ืขืจื“ื™ืง (ื‘ืคื™ืจื•ืฉ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ DEBUG ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ืื™ืŸ Django ื“ื•ืจืš ืงืึทืžืคึผืขืจื™ื ื’ ื“ื™ ืกื•ื•ื™ื•ื•ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ืžื™ื˜ "ื’ื™ืœื˜ื™ืง" ืกื˜ืจื™ื ื’ืก ืื™ื– ืื™ื™ื ืขืจ ืคื•ืŸ ื“ื™ ืžืขืจืกื˜ ืคึผืจืึธืกื˜ ืงืึทืกืขืก). ืื‘ืขืจ ืื™ืฆื˜ ืขืก ืื™ื– ื ื™ื˜ ื“ืึทืจืคึฟืŸ ืฆื• ื‘ืคื™ืจื•ืฉ ื’ืขืจ ืกื˜ืจื™ื ื’ืก - ืจื•ื‘ึฟ ืคื•ืŸ ื“ื™ ื ื™ื™ื˜ื™ืง ืึทืงืฉืึทื ื– ื–ืขื ืขืŸ ืฉื•ื™ืŸ ืขืžื‘ืขื“ื™ื“ ืื™ืŸ ื“ื™ ื˜ื™ืคืขื ื™ืฉืŸ ืคื•ืŸ ื“ืขืจ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื•ืŸ ื ืึธืจ ื•ื•ืืจื˜ืŸ ืคึฟืึทืจ ืึท ืกื™ื’ื ืึทืœ ืฆื• ืฉืคึผื™ืœืŸ. ๐Ÿ™‚ ืื™ืŸ ืึทืœื’ืขืžื™ื™ืŸ, ื˜ื™ื™ืคึผื™ื ื’ ืึทืจื‘ืขื˜ ื˜ืจืึทื ืกืคึผืขืจืึทื ื˜ ืื•ืŸ ืฉื˜ื™ืฆื˜ ื›ึผืžืขื˜ ืึทืœืข ื‘ื ื™ืžืฆื ื’ืขื‘ื•ื™ื˜-ืื™ืŸ ื“ืึทื˜ืŸ ื˜ื™ื™ืคึผืก (ืคืจืึธื–ืขื ืกืขื˜, ืงืึธืžืคึผืœืขืงืก ืื•ืŸ ื‘ื™ื˜ืขืก ื–ืขื ืขืŸ ื ื™ืฉื˜ ื˜ืขืกื˜ืขื“).

ื“ื™ ืคืึธื“ืขืจื•ื ื’ ืฆื• ืฉื˜ื™ืฆืŸ Python 2 ืื™ื– ื™ืžืคึผืœืึทืžืขื ืึทื“ ืžื™ื˜ ื›ึผืžืขื˜ ืงื™ื™ืŸ ืงืจื‘ื ื•ืช (ื“ื™ ืคืึทืจืœืึธื–ืŸ ืคื•ืŸ ื˜ื™ื™ืคึผื™ื ื’ ืื•ืŸ ืขื˜ืœืขื›ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ "ืฆื•ืงืขืจ ืงืึทื ื“ื™ื–" ืคื•ืŸ ื“ื™ ืœืขืฆื˜ืข ื•ื•ืขืจืกื™ืขืก ืคื•ืŸ Python 3), ืกืคึผืขืฆื™ืขืœ ื“ืึทื ืง ืฆื• ื“ื™ ื•ืžืขื˜ื•ืžื™ืง ื–ืขืงืก (ืฆื• ืกืึธืœื•ื•ืข ื“ื™ ืคึผืจืึธื‘ืœืขืžืก ืคื•ืŸ ื ื™ืฆืŸ ืžืขื˜ืึทืงืœืึทืกืก) ).

ืึธื‘ืขืจ ืขืก ื–ืขื ืขืŸ ืขื˜ืœืขื›ืข ืจื™ืกื˜ืจื™ืงืฉืึทื ื–:

  • ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ Python 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. ื“ื™ ืคึผืึทืจืึทืžืขื˜ืขืจืก ืคึฟืึทืจ ื™ืขื“ืขืจ ืคึฟื•ื ืงืฆื™ืข ืจื•ืคืŸ ื–ืขื ืขืŸ ื“ืขืžืึธืœื˜ ื“ื•ืจื›ื’ืขื’ืื ื’ืขืŸ ืื™ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื‘ืึทืฉ ื‘ืึทืคึฟืขืœืŸ ืจื•ืคืŸ;
  4. ื™ืขื“ืขืจ ื‘ืึทืคึฟืขืœ ืื™ื– ืขืงืกืึทืงื™ื•ื˜ืึทื“ "ื“ืึธ ืื•ืŸ ืื™ืฆื˜" ืื™ืŸ ื“ืขื ืžืึธืžืขื ื˜ ืขืก ืื™ื– ื’ืขืจื•ืคืŸ, ื“.ื”. ื“ืขืจ ืกื™ื ื˜ืฉืจืึธื ืึธื•ืก ืฆื•ื’ืึทื ื’ ืึทืจื‘ืขื˜;
  5. ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืึทืงืกืขืก ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืึท ื‘ืึทืคึฟืขืœ ืื™ืŸ ืกื˜ื“ืึธื•ื˜, ื•ื•ื™ ื’ืขื–ื•ื ื˜ ื•ื•ื™ ื–ื™ื™ืŸ ืฆื•ืจื™ืงืงืขืจ ืงืึธื“;
  6. ืื•ื™ื‘ ื“ื™ ื‘ืึทืคึฟืขืœ ืื™ื– ื ื™ืฉื˜ ืื™ืŸ ื“ื™ ืกื™ืกื˜ืขื, ืึท ื•ื™ืกื ืขื ืื™ื– ืืจืœื ื’ืขื•ื•ืืจืคืŸ.

ื•ื•ื™ ืžื™ื˜ ืกืžืึทืจื˜-ืขื ื•ื•, ืขืก ืื™ื– ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ Python 2 (ื›ืึธื˜ืฉ ืึท ื‘ื™ืกืœ ืžืขืจ ืกืึทืงืจืึทืคื™ืฉืึทืœ ื‘ืœื•ื˜ ืื™ื– ืคืืจืœืื ื’ื˜) ืื•ืŸ ืงื™ื™ืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ Python 3.0-3.4.

ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคึผืœืึทื ื–

ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ ืœื™ื™ื‘ืจืขืจื™ื– ืื™ืฆื˜: ื‘ื™ื™ื“ืข ื–ืขื ืขืŸ ืึทืจื™ื™ึทื ื’ืขืฉื™ืงื˜ ืื•ื™ืฃ ื“ืขืจ ื‘ืึทืึทืžื˜ืขืจ PyPI. ืงื•ื•ืืœืŸ ื–ืขื ืขืŸ ื‘ืืจืขื›ื˜ื™ื’ื˜ ืื•ื™ืฃ Github (ื–ืขืŸ ื•ื•ื™ื™ื˜ืขืจ).

ื‘ื™ื™ื“ืข ืœื™ื™ื‘ืจืขืจื™ื– ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืžื™ื˜ ื“ื™ ื‘ืึทืžืขืจืงื•ื ื’ืขืŸ ื’ืขื–ืืžืœื˜ ืคื•ืŸ ื“ื™ ืื™ื ื˜ืขืจืขืกื™ืจื˜. ืื•ืŸ ืื•ื™ื‘ ืขืก ืงืขืŸ ื–ื™ื™ืŸ ืฉื•ื•ืขืจ ืฆื• ืงื•ืžืขืŸ ืึทืจื•ื™ืฃ ืžื™ื˜ ืึท ืคืึทืจืฉื™ื™ื“ื ืงื™ื™ึทื˜ ืคื•ืŸ ื ื™ื™ึทืข ืคึฟืขื™ึดืงื™ื™ื˜ืŸ ืื™ืŸ ืกืžืึทืจื˜-ืขื ื•ื•, ื“ืขืžืึธืœื˜ ืื™ืŸ ืคึผื™ื˜ื”ืึธืŸ-ืฉืึธืœ ืขืก ืื™ื– ื‘ืืฉื˜ื™ืžื˜ ืขืคึผืขืก ืึทื ื“ืขืจืฉ ืฆื• ืœื™ื™ื’ืŸ:

  • ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ื ื™ื˜-ื‘ืœืึทืงื™ื ื’ ืงืึทืœืœืก;
  • ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื• ืงืึธืžื•ื ื™ืงืึทืฆื™ืข ืžื™ื˜ ื“ื™ ืžืึทื ืฉืึทืคึฟื˜ (ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืกื˜ื“ื™ืŸ);
  • ืึทื“ื™ื ื’ ื ื™ื™ึท ืคึผืจืึธืคึผืขืจื˜ื™ืขืก (ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืคืึทืจืžืึธื’ ืฆื• ื‘ืึทืงื•ืžืขืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข ืคื•ืŸ โ€‹โ€‹ืกื˜ื“ืขืจืจ);
  • ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืึท ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ ืคื•ืŸ ื‘ื ื™ืžืฆื ืงืึทืžืึทื ื“ื– (ืคึฟืึทืจ ื ื•ืฆืŸ ืžื™ื˜ ื“ื™ ื“ื™ืจ () ืคึฟื•ื ืงืฆื™ืข);
  • ืืื–"ื• ื•

ืจืขืคึฟืขืจืขื ืฆืŸ

  1. smart-env ื‘ื™ื‘ืœื™ืึธื˜ืขืง: ื’ื™ื˜ื”ื•ื‘ ะธ ืคึผืคึผื™
  2. ืคึผื™ื˜ื”ืึธืŸ-ืฉืขืœ ื‘ื™ื‘ืœื™ืึธื˜ืขืง: ื’ื™ื˜ื”ื•ื‘ ะธ ืคึผืคึผื™
  3. ื˜ืขืœืขื’ืจืึทื ืงืึทื ืึทืœ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื•ื ื’ืขืŸ

UPD 23.02.2020/XNUMX/XNUMX:
* ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื– ื–ืขื ืขืŸ ืืจื™ื‘ืขืจื’ืขืคืืจืŸ, ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ืคึฟืึทืจื‘ื™ื ื“ื•ื ื’ืขืŸ ื–ืขื ืขืŸ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜
* ื•ื•ืขืจืกื™ืข python-shell==1.0.1 ืื™ื– ื’ืจื™ื™ื˜ ืคึฟืึทืจ ืžืขืœื“ื•ื ื’ ืื•ื™ืฃ 29.02.2020/XNUMX/XNUMX. ืขื ื“ืขืจื•ื ื’ืขืŸ ืึทืจื™ื™ึทื ื ืขืžืขืŸ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืึทื•ื˜ืึธืงืึธืžืคึผืœืขื˜ืข ื‘ืึทืคึฟืขืœืŸ ืื•ืŸ ื“ื™ ื“ื™ืจ (ืฉืขืœ) ื‘ืึทืคึฟืขืœ, ืคืœื™ืกื ื“ื™ืง ืงืึทืžืึทื ื“ื– ืžื™ื˜ ืึท ืคืึทืจืงืจื™ืคึผืœื˜ ืคึผื™ื˜ื”ืึธืŸ ื™ื™ื“ืขื ืึทืคื™ื™ื“ ืื•ืŸ ื–ืฉื•ืง ืคื™ืงืกื™ื–.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’