ืกืื ืืืื ืฉื ืืืื ืืืื!
ืคืืืืจ 29 2020 ืฉื ืื ืืืฆืืช ืืืงืจื ืจืฉืืืช ืฉื ืกืคืจืืืช ืืชืจืืฉื smart-env ะธ ืืขืืคืช ืคืืชืื. ืืื ืฉืื ืืืืข, ืื ื ืืฆืืข ืฉืชืงืจื ืืืชื ืงืืื
ืืงืฆืจื, ืืฉืื ืืืื ืืืืืื ืืฉืืืช ืคืงืืืืช, ืืืืืืช ืืืจืืืืช ืืืคืขืืช ืคืงืืืืช, ืืื ืขืืืื ืืืืฉ ืืชืืงืื ื ืืืืื.
ืืคืจืืื ืื ื ืจืื ืืชืื.
ืื ืืืฉ ื-python-shell?
ืื ื ืืชืืื ืืื ืขื ืงืื ืื.
ืืฉืืืช ืคืงืืื
ืืกืืื - ืื ื ืื ืืฉืืขืืจื/IDE/ืืจืืื ื ืืืงืฉืื ืืื ืืช ืฉื ืืคืงืืื, ืืืคืขืืื ืืคืืื ืืช ืคืจืืืจื ืืฉืืื? ืื python-shell ืืชืงืืืช ืืืืจืื ืืืชื ืคืื ืงืฆืืื ืืืืช ืืืื. ืืฉื ืืขืืืื ืฉืืฉืืืช ืฉื ืืืืงืช ื-Shell ืืชืืช ืืืืกื ืืื ืืข ืื ืื-ืคืงืื ืื ืืฉืืืช ืฉืื (__getattr__ ืื ืืฆื ืืื ืืงืื), ื ืืฆืจื ืืฉืืื ืืืืืืืืช ืื ืืืคืก (ืขื ืืื ืืขืืกืช ืืชืจ ืฉื ืฉืืืช __dir__, ืืืชืืื). ืืฉืืื ืืืืืืืืช ืคืืขืืช ืืืื ืืกืืืืืช BPython ื-IPython. ืืืืื, ืืืืชื ืจืืฆื ืืจืืืช ืืื ืืืจืฆืื ืขื ืืืฆืจืื ืืืืืืื ืืืชืจ ืืื PyCharm, ืืืคืฉืจืืืืช ืืืฉืื ื ืืืงืืช ืืืืืื ืื.
ืืืกืคืช ืืืคืืื ืื
ืืืืง ืืืืคืฆื, ืืืืืงื Shell ืงืืืื ืืืคืืื last_command ืืืฉ. ืืฆืืจื ืืื ืืชืขืืจืจ ืืืืืื ืฉืืืฉืจ ื ืืจืง ShellException ืขื ืืื ืคืงืืื ืขื ืงืื ืืืืจื ืฉืืื ื ืืคืก, ืืืืืืงื ื-Command ืื ืืืืืจ ืืืงืจืืื __call__() ืืืืืืืงื ืืคืงืืื. ืขืืฉืื ืืฉ ืืืืื ืืช ืืขืฉืืช ืืช ืื:
try:
command = Shell.touch('/foo.txt')
except ShellException:
command = Shell.last_command
ืื ืจืฉืืืช ืืืืคืืื ืื ืฉื ืืืืืืงื ืืคืงืืื ืืชืจืืื. ื ืืกืฃ ืฉืื ืฉืืืืืช ืฉืืืืืจ ืืช ืคืื ืืคืงืืื ืืืจื ืืฉืืืืืช.
ืืคืขืืช ืคืงืืืืช ืขื ืฉืืืช Python ืื ืืืงืืื
ืืืขื ืืื ืืขืจืืช ืืฉ ืืคืืืช ืชืืื ืืช ืืืช ืฉืฉืื ืืื ื ืืชืืื ืืืืื ื-Python (ืืืืืื, ืืื ืืฉืืจืืช ืืืืืข 2to3). ืชืชืงืฉืจ ืืืื ืขื
Shell.2to3()
ืื ืื ืื ืขืืื, ืืืชืืจืืื ืื ืืืคืฉืจ ืืื ืืขืืืจ.
ืืคืชืจืื ืืื ืืงืจืื ืืคืงืืื ืืืจื ืกืืืืืืช:
Shell("2to3") # ะฒะพะทะฒัะฐัะฐะตั ะพะฑัะตะบั ะบะพะผะฐะฝะดั
ืจืืื ืืฆืืื ืฉืืืืชื ืืืคื ื ืืชื ืืืจืืฅ ืคืงืืืืช ืชืงืคืืช ืื ืงืืืช ืืืื ืฉื ืืืชืืจืืื, ืื ืฉืืืชืืจ ืืช ืืืคืฉืจืืช ืืืฆืืจ ืกืงืจืืคืืื ืืืืฉืื ืืื
cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)
ืฉืื ืืืื ืืื ืืจืืื
- ืืืืืขื ืืฉืืืืช __repr__() ื__str__() ืฉื ืืืืืืงื ืืืืืงื Command, ืืฉืจ ืืืืฆืจืืช ืืขืช ืขืจืืื ืืื ืืืืืืืืืื (ืคืงืืื ืขื ืคืจืืืจืื ืืคืื stdout ืฉืื, ืืืชืืื).
- ืชืืงืื ื ืงืื ืงืืื.
- ืืืกืคืช ืืืกืื ืืืื, ืืื ืื ืืจืืื ืืืืฉ ืฉื ืงืืืืื.
- ืืืกืคืช ืืืืงืืช Subprocess ื-Process, ืฉืืืจืชื ืืืฆืืจ ืจืื ื ืืกืคืช ืฉื ืืคืฉืื ืืขืืืื ืขื ืืืืื ืชืช-ืืชืืืื. ืืจืืฉ ืืขืืงืจ ืืื ืืื ืืข ืืคืืืืช ืงืื ืืขืืืื ืขื Python 2/3, ืืื ืืืื ืืกืคืง ืื ืืื ืืกืื ืืืจืื.
ืื ืืืฉ ื-smart-env?
ืื ืืืื ื-python-shell, ืืื ืคืืืช ืฉืื ืืืื ืืกืคืจืืืช smart-env. ืืกืืื ืืื ืคืฉืืื - ืืืกืจ ืืื ืคื ืื, ืฉืืืืืื ืืืขืืจื ืืื ืฉืืคืืจืื ืคืืื ืฆืืืืืื (ืืืฉื, ืืฉืืื ืืืืืืืืช ืฉื ืืฉืชื ื ืกืืืื) ืืืืืืจื ืืืื.
ืืืขืฉื, ืืืฆืขื ืืฉืื ืืืื ืืืืื ืืกืคืจืืื:
- ืชืืงืื ื ืงืื ืงืืื.
- ืืจืืื ืืืืฉ.
- ืืจืืื ืืืืฉ ืืฉืืืื ืืืื ืื ืงืืืืื.
ืชืืื ืืืช ืืืืืืจืืช ืืืืืช
ืกืคืจืืืช python-shell
- ืืืกืคืช ืชืืืื ืืงืจืืืืช ืคืงืืืืช ืฉืืื ื ืืืกืืืช (ืืงืืืืืช ืืืฆืืข).
ืกืคืจืืืช smart-env
- ืืืฉืื ืืฉืืื ืืืืืืืืช ืฉื ืืฉืชื ื ืกืืืื ืืืืืงื ENV.
- ืชืืืื ืืืืคืจืืืจ in ืืืืืงืช ืงืืืื ืฉื ืืฉืชื ื env.
- ืืืืขืช ืชืืืื ืืคืื ืงืฆืืืช str() ื- repr() ืขืืืจ ืืืืงืช ENV.
ืชืืจืืื ืืืืืืจืืช ืืืืืช ืืคืืจืกืื ืขืื ืืขืจืืฆื ืืชืงืฉืืจืช ืืืืื:
ืขืจืืฅ ืืืืจื (ืฆืืืืจื) ืืืืืจ - ืขืืืื ืืืืืจ ืื.
ืืงืืจ: www.habr.com