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