ื™ืฆื™ืจืช ื™ื“ื™ื“ื•ืช ืฉืœ Python ื•-Bash: ืกืคืจื™ื•ืช smart-env ื•-python-shell

ื™ื•ื ื˜ื•ื‘ ืœื›ื•ืœื.

ื›ื™ื•ื, Python ื”ื™ื ืื—ืช ื”ืฉืคื•ืช ื”ื ืคื•ืฆื•ืช ื‘ื™ื•ืชืจ ื‘ืชื—ื•ื ืฉืœ ื™ืฆื™ืจืช ืœื ืจืง ืžื•ืฆืจื™ ืชื•ื›ื ื” ื‘ืขืฆืžื, ืืœื ื’ื ืืกืคืงืช ื”ืชืฉืชื™ืช ืฉืœื”ื. ื›ืชื•ืฆืื” ืžื›ืš, ื ืืœืฆื• devops ืจื‘ื™ื, ื‘ื™ืŸ ืื ืžืจืฆื•ื ื ืื• ื ื’ื“ื•, ืœืœืžื•ื“ ืฉืคื” ื—ื“ืฉื” ืœืฉื™ืžื•ืฉ ืžืื•ื—ืจ ื™ื•ืชืจ ื›ืชื•ืกืคืช ืœืชืกืจื™ื˜ื™ื ื”ื™ืฉื ื™ื ื•ื”ื˜ื•ื‘ื™ื ืฉืœ ื‘ืฉ. ืขื ื–ืืช, Bash ื•-Python ืžืฆื”ื™ืจื™ื ืขืœ ื’ื™ืฉื•ืช ืฉื•ื ื•ืช ืœื›ืชื™ื‘ืช ืงื•ื“ ื•ื™ืฉ ืœื”ื ืชื›ื•ื ื•ืช ืžืกื•ื™ืžื•ืช, ื›ืœื•ืžืจ ื”ืขื‘ืจื” ืฉืœ ืกืงืจื™ืคื˜ื™ื ืฉืœ Bash ืœ"ืฉืคืช ื”ื ื—ืฉ" ืžืชื’ืœื” ืœืคืขืžื™ื ื›ืžืฉื™ืžื” ืจื—ื‘ืช ื”ื™ืงืฃ ื•ืจื—ื•ืงื” ืžืœื”ื™ื•ืช ื˜ืจื™ื•ื•ื™ืืœื™ืช.

ื›ื“ื™ ืœื”ืงืœ ืขืœ ื”ื—ื™ื™ื ืฉืœ devops, ืกืคืจื™ื•ืช ื•ื›ืœื™ ืขื–ืจ ืฉื™ืžื•ืฉื™ื™ื ืจื‘ื™ื ื‘-Python ื ื•ืฆืจื• ื•ืžืžืฉื™ื›ื™ื ืœื”ื™ื•ื•ืฆืจ. ืžืืžืจ ื–ื” ืžืชืืจ ืฉืชื™ ืกืคืจื™ื•ืช ื—ื“ืฉื•ืช ืฉื ื•ืฆืจื• ืขืœ ื™ื“ื™ ืžื—ื‘ืจ ื”ืคื•ืกื˜ ื”ื–ื” - smart-env ะธ ืžืขื˜ืคืช ืคื™ืชื•ืŸ - ื•ื ื•ืขื“ ืœืคื˜ื•ืจ ืืช ื”-devops ืžื”ืฆื•ืจืš ืœื”ืงื“ื™ืฉ ืชืฉื•ืžืช ืœื‘ ืจื‘ื” ืœืžื•ืจื›ื‘ื•ืช ื”ืขื‘ื•ื“ื” ืขื Python, ืžื” ืฉืžืฉืื™ืจ ืžืงื•ื ืœืžืฉื™ืžื•ืช ืžืขื ื™ื™ื ื•ืช ื™ื•ืชืจ. ื”ื™ืงืฃ ื”ืคืขื™ืœื•ืช ืฉืœ ืกืคืจื™ื•ืช ื”ื•ื ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ื•ื”ืฉืงืช ื›ืœื™ ืขื–ืจ ื—ื™ืฆื•ื ื™ื™ื.

ืžื™ ืฉืžืขื•ื ื™ื™ืŸ, ื‘ื‘ืงืฉื” ืœืจืื•ืช ื—ืชื•ืœ.

"ืื•ืคื ื™ื™ื" ื—ื“ืฉื™ื?

ื ืจืื”, ืžื“ื•ืข ืœื™ืฆื•ืจ ื—ื‘ื™ืœื•ืช ื—ื“ืฉื•ืช ืœืคืขื•ืœื•ืช ืจื’ื™ืœื•ืช ืœืžื“ื™? ืžื” ืžื•ื ืข ืžืžืš ืœื”ืฉืชืžืฉ ื‘-os.environ ื•ื‘-subprocess.<ืฉื™ื˜ื” ืื• ืžื—ืœืงื” ืœื‘ื—ื™ืจืชืš> ื™ืฉื™ืจื•ืช?

ืื‘ื™ื ื”ื•ื›ื—ื•ืช ืœื˜ื•ื‘ืช ื›ืœ ืื—ืช ืžื”ืกืคืจื™ื•ืช ื‘ื ืคืจื“.

ืกืคืจื™ื™ืช smart-env

ืœืคื ื™ ื›ืชื™ื‘ืช ืžื•ื—ื•ืช ืžืฉืœืš, ื›ื“ืื™ ืœื”ื™ื›ื ืก ืœืื™ื ื˜ืจื ื˜ ื•ืœื—ืคืฉ ืคืชืจื•ื ื•ืช ืžื•ื›ื ื™ื. ื›ืžื•ื‘ืŸ, ื™ืฉ ืกื™ื›ื•ืŸ ืฉืœื ืชืžืฆื ืืช ืžื” ืฉืืชื” ืฆืจื™ืš, ืื‘ืœ ื–ื” ื“ื•ื•ืงื "ืื™ืจื•ืข ื‘ื™ื˜ื•ื—". ื›ื›ืœืœ, ื’ื™ืฉื” ื–ื• ืขื•ื‘ื“ืช ื•ื—ื•ืกื›ืช ื”ืจื‘ื” ื–ืžืŸ ื•ืžืืžืฅ.

ืœืคื™ ื”ืชื•ืฆืื•ืช ืžื ื•ืข ื—ื™ืคื•ืฉ ื”ืชื’ืœื” ื”ื“ื‘ืจ ื”ื‘ื:

  • ื™ืฉื ืŸ ื—ื‘ื™ืœื•ืช ืฉื‘ืขืฆื ืขื•ื˜ืคื•ืช ืงืจื™ืื•ืช ืœ-os.environ, ืืš ื‘ืžืงื‘ื™ืœ ื“ื•ืจืฉื•ืช ืฆืจื•ืจ ืคืขื•ืœื•ืช ืžืกื™ื—ื•ืช ื“ืขืช (ื™ืฆื™ืจืช ืžื•ืคืข ืฉืœ ืžื—ืœืงื”, ืคืจืžื˜ืจื™ื ืžื™ื•ื—ื“ื™ื ื‘ืงืจื™ืื•ืช ื•ื›ื•');
  • ื™ืฉื ืŸ ื—ื‘ื™ืœื•ืช ื˜ื•ื‘ื•ืช, ืืฉืจ, ืขื ื–ืืช, ืงืฉื•ืจื•ืช ื‘ืงืคื“ื ื•ืช ืœืืงื•ืกื™ืกื˜ื ืกืคืฆื™ืคื™ (ื‘ืขื™ืงืจ ืžืกื’ืจื•ืช ืื™ื ื˜ืจื ื˜ ื›ืžื• Django) ื•ืœื›ืŸ ืื™ื ืŸ ืื•ื ื™ื‘ืจืกืืœื™ื•ืช ื›ืœืœ ืœืœื ืงื•ื‘ืฅ;
  • ื™ืฉ ื ื™ืกื™ื•ื ื•ืช ื ื“ื™ืจื™ื ืœืขืฉื•ืช ืžืฉื”ื• ื—ื“ืฉ. ืœื“ื•ื’ืžื”, ืœื”ื•ืกื™ืฃ ื”ืงืœื“ื” ื•ืœื ืชื— ื‘ืื•ืคืŸ ืžืคื•ืจืฉ ืขืจื›ื™ ืžืฉืชื ื™ื ืขืœ ื™ื“ื™ ืงืจื™ืื” ืœืฉื™ื˜ื•ืช ื›ืžื•
    get_<typename>(var_name)

    ืื• ืคื” ืขื•ื“ ืคืชืจื•ืŸ ืื—ื“, ืืฉืจ, ืขื ื–ืืช, ืื™ื ื• ืชื•ืžืš ื‘-Python 2 ื”ืžื•ืฉื—ืช ื›ืขืช (ืฉืœืžืจื•ืช RIP ืจืฉืžื™, ื™ืฉ ืขื“ื™ื™ืŸ ื”ืจื™ื ืฉืœ ืงื•ื“ ื›ืชื•ื‘ ื•ืžืขืจื›ื•ืช ืืงื•ืœื•ื’ื™ื•ืช ืฉืœืžื•ืช);

  • ื™ืฉื ืŸ ืขื‘ื•ื“ื•ืช ื™ืฆื™ืจื” ืฉืœ ืชืœืžื™ื“ื™ ื‘ื™ืช ืกืคืจ ืฉืžืกื™ื‘ื” ืœื ื™ื“ื•ืขื” ื”ื’ื™ืขื• ืœ-PyPI ื‘ืžืขืœื” ื”ื–ืจื ื•ื™ื•ืฆืจื•ืช ืจืง ื‘ืขื™ื•ืช ื‘ืžืชืŸ ืฉืžื•ืช ืœื—ื‘ื™ืœื•ืช ื—ื“ืฉื•ืช (ื‘ืžื™ื•ื—ื“, ื”ืฉื "smart-env" ื”ื•ื ืžื“ื“ ื”ื›ืจื—ื™).

ื•ื”ืจืฉื™ืžื” ื”ื–ื• ื™ื›ื•ืœื” ืœื”ื™ืžืฉืš ืขื•ื“ ื–ืžืŸ ืจื‘. ืขื ื–ืืช, ื”ื ืงื•ื“ื•ืช ืฉืœืขื™ืœ ื”ืกืคื™ืงื• ื›ื“ื™ ืœืจื’ืฉ ืื•ืชื™ ืžื”ืจืขื™ื•ืŸ ืœืขืฉื•ืช ืžืฉื”ื• ื ื•ื— ื•ืื•ื ื™ื‘ืจืกืœื™.

ื“ืจื™ืฉื•ืช ืฉื”ื•ื’ื“ืจื• ืœืคื ื™ ื›ืชื™ื‘ืช 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, ื”ืกืคืจื™ื™ื” ืื™ื ื” ืชื•ืžื›ืช ื‘ื”ืกื™ื“ืจื™ืืœื™ื–ืฆื™ื” ืฉืœ ืžื™ืœื•ืœื™ ืกื˜. ืชื™ืื•ืจ ื›ืืŸ. ืื‘ืœ ืื ืžื™ืฉื”ื• ืจื•ืฆื” ืœื™ื™ืฉื ืืช ื–ื”, ืืชื” ืžื•ื–ืžืŸ :);

ืœืกืคืจื™ื™ื” ื™ืฉ ื’ื ืžื ื’ื ื•ืŸ ื—ืจื™ื’ ื‘ืžืงืจื” ืฉืœ ืฉื’ื™ืื•ืช ื ื™ืชื•ื—. ืื ืœื ื ื™ืชืŸ ื”ื™ื” ืœื–ื”ื•ืช ืืช ื”ืžื—ืจื•ื–ืช ืขืœ ื™ื“ื™ ืืฃ ืื—ื“ ืžื”ื ืชื—ื™ื ื”ื–ืžื™ื ื™ื, ื”ืขืจืš ื ืฉืืจ ืžื—ืจื•ื–ืช (ื‘ืžืงื•ื ื–ืืช, ืžื˜ืขืžื™ ื ื•ื—ื•ืช ื•ืชืื™ืžื•ืช ืœืื—ื•ืจ ืขื ื”ื”ื™ื’ื™ื•ืŸ ื”ืจื’ื™ืœ ืฉืœ ืื™ืš ืžืฉืชื ื™ื ืขื•ื‘ื“ื™ื ื‘-Bash).

ืกืคืจื™ื™ืช python-shell

ืขื›ืฉื™ื• ืื ื™ ืืกืคืจ ืœื›ื ืขืœ ื”ืกืคืจื™ื™ื” ื”ืฉื ื™ื™ื” (ืื ื™ ืืฉืžื™ื˜ ืืช ื”ืชื™ืื•ืจ ืฉืœ ื”ื—ืกืจื•ื ื•ืช ืฉืœ ื”ืื ืœื•ื’ื™ื ื”ืงื™ื™ืžื™ื - ื–ื” ื“ื•ืžื” ืœื–ื” ืฉืžืชื•ืืจ ืขื‘ื•ืจ ืื ืœื•ื’ื™ื ื—ื›ืžื™ื-env. - ื›ืืŸ ะธ ื›ืืŸ).

ื‘ืื•ืคืŸ ื›ืœืœื™, ืจืขื™ื•ืŸ ื”ื™ื™ืฉื•ื ื•ื”ื“ืจื™ืฉื•ืช ืขื‘ื•ืจื• ื“ื•ืžื•ืช ืœืืœื• ื”ืžืชื•ืืจื•ืช ืขื‘ื•ืจ smart-env, ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช ืžื”ื“ื•ื’ืžื”:

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. ืžื—ืœืงื” ื™ื—ื™ื“ื” ื”ืžื™ื™ืฆื’ืช ืืช Bash ื‘ืขื•ืœื Python;
  2. ื›ืœ ืคืงื•ื“ืช Bash ื ืงืจืืช ื›ืคื•ื ืงืฆื™ื” ืฉืœ ื”ืžื—ืœืงื” Shell;
  3. ืœืื—ืจ ืžื›ืŸ, ื”ืคืจืžื˜ืจื™ื ืขื‘ื•ืจ ื›ืœ ืงืจื™ืืช ืคื•ื ืงืฆื™ื” ืžื•ืขื‘ืจื™ื ืœืงืจื™ืืช ื”ืคืงื•ื“ื” ื”ืžืชืื™ืžื” ืฉืœ Bash;
  4. ื›ืœ ืคืงื•ื“ื” ืžื‘ื•ืฆืขืช "ื›ืืŸ ื•ืขื›ืฉื™ื•" ื‘ืจื’ืข ืฉื”ื™ื ื ืงืจืืช, ื›ืœื•ืžืจ. ื”ื’ื™ืฉื” ื”ืกื™ื ื›ืจื•ื ื™ืช ืขื•ื‘ื“ืช;
  5. ืืคืฉืจ ืœื’ืฉืช ืœืคืœื˜ ืฉืœ ืคืงื•ื“ื” ื‘-stdout, ื›ืžื• ื’ื ืœืงื•ื“ ื”ื”ื—ื–ืจ ืฉืœื”;
  6. ืื ื”ืคืงื•ื“ื” ืื™ื ื” ื‘ืžืขืจื›ืช, ื ื–ืจืง ื—ืจื™ื’.

ื›ืžื• ื‘-smart-env, ื™ืฉ ืชืžื™ื›ื” ื‘-Python 2 (ืœืžืจื•ืช ืฉื ื“ืจืฉ ืงืฆืช ื™ื•ืชืจ ื“ื ืœื”ืงืจื‘ื”) ื•ืื™ืŸ ืชืžื™ื›ื” ื‘-Python 3.0-3.4.

ืชื•ื›ื ื™ื•ืช ืคื™ืชื•ื— ืกืคืจื™ื™ื”

ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืกืคืจื™ื•ืช ืขื›ืฉื™ื•: ืฉืชื™ื”ืŸ ืžืคื•ืจืกืžื•ืช ื‘- PyPI ื”ืจืฉืžื™. ืžืงื•ืจื•ืช ื–ืžื™ื ื™ื ื‘- Github (ืจืื” ืœื”ืœืŸ).

ืฉืชื™ ื”ืกืคืจื™ื•ืช ื™ืคื•ืชื—ื• ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ืžืฉื•ื‘ ืฉื ืืกืฃ ืžื”ืžืชืขื ื™ื™ื ื™ื. ื•ืื ื–ื” ืขืฉื•ื™ ืœื”ื™ื•ืช ืงืฉื” ืœื”ืžืฆื™ื ืžื’ื•ื•ืŸ ืชื›ื•ื ื•ืช ื—ื“ืฉื•ืช ื‘-smart-env, ืื– ื‘-python-shell ื™ืฉ ื‘ื”ื—ืœื˜ ืžืฉื”ื• ื ื•ืกืฃ ืœื”ื•ืกื™ืฃ:

  • ืชืžื™ื›ื” ื‘ืฉื™ื—ื•ืช ืฉืื™ื ืŸ ื—ื•ืกืžื•ืช;
  • ืืคืฉืจื•ืช ืœืชืงืฉื•ืจืช ืื™ื ื˜ืจืืงื˜ื™ื‘ื™ืช ืขื ื”ืฆื•ื•ืช (ืขื‘ื•ื“ื” ืขื stdin);
  • ื”ื•ืกืคืช ืžืืคื™ื™ื ื™ื ื—ื“ืฉื™ื (ืœื“ื•ื’ืžื”, ื ื›ืก ืœืงื‘ืœืช ืคืœื˜ ืž-stderr);
  • ื™ื™ืฉื•ื ืฉืœ ืกืคืจื™ื™ื” ืฉืœ ืคืงื•ื“ื•ืช ื–ืžื™ื ื•ืช (ืœืฉื™ืžื•ืฉ ืขื ื”ืคื•ื ืงืฆื™ื” dir());
  • ื•ื›ื• '

ืชื–ื›ื•ืจ

  1. ืกืคืจื™ื™ืช smart-env: GitHub ะธ PyPI
  2. ืกืคืจื™ื™ืช python-shell: GitHub ะธ PyPI
  3. ืขืจื•ืฅ ื˜ืœื’ืจื ืขื“ื›ื•ื ื™ ืกืคืจื™ื™ื”

UPD23.02.2020:
* ื”ืžืื’ืจื™ื ื”ื•ืขื‘ืจื•, ื”ืงื™ืฉื•ืจื™ื ื”ืžืชืื™ืžื™ื ืขื•ื“ื›ื ื•
* ื’ืจืกืช python-shell==1.0.1 ืžืชื›ื•ื ื ืช ืœืฉื—ืจื•ืจ ื‘-29.02.2020/XNUMX/XNUMX. ื”ืฉื™ื ื•ื™ื™ื ื›ื•ืœืœื™ื ืชืžื™ื›ื” ื‘ื”ืฉืœืžื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืคืงื•ื“ื•ืช ื•ื‘ืคืงื•ื“ื” dir(Shell), ืคืงื•ื“ื•ืช ื”ืจืฆืช ืขื ืžื–ื”ื” Python ืœื ื—ื•ืงื™ ื•ืชื™ืงื•ื ื™ ื‘ืื’ื™ื.

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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”