เจธเจพเจฐเจฟเจเจ เจจเฉเฉฐ เจธเจผเฉเจญ เจฆเจฟเจจ!
29 เจซเจฐเจตเจฐเฉ 2020 เจธเจพเจฒ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉเจเจ เจฆเฉ เจ
เจงเจฟเจเจพเจฐเจค เจฎเจพเจเจเฉเจฐเฉ-เจฐเจฟเจฒเฉเจเจผ เจนเฉเจ smart-env ะธ python-เจธเจผเฉเจฒ. เจเจนเจจเจพเจ เจฒเจ เจเฉ เจจเจนเฉเจ เจเจพเจฃเจฆเฉ เจนเจจ, เจฎเฉเจ เจธเฉเจเจพเจ
เจฆเจฟเฉฐเจฆเจพ เจนเจพเจ เจเจฟ เจคเฉเจธเฉเจ เจชเจนเจฟเจฒเจพเจ เจเจธเจจเฉเฉฐ เจชเฉเฉเจนเฉ
เจธเฉฐเจเฉเจช เจฐเฉเจช เจตเจฟเฉฑเจ, เจคเจฌเจฆเฉเจฒเฉเจเจ เจตเจฟเฉฑเจ เจเจฎเจพเจเจก เจธเฉฐเจชเฉเจฐเจจเจคเจพ, เจเจฎเจพเจเจกเจพเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฒเจ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจธเจฎเจฐเฉฑเจฅเจพเจตเจพเจ, เจเฉเจ เจฐเฉเจซเฉเจเจเจฐเจฟเฉฐเจ เจ เจคเฉ เจฌเฉฑเจ เจซเจฟเจเจธ เจธเจผเจพเจฎเจฒ เจนเจจเฅค
เจตเฉเจฐเจตเจฟเจเจ เจฒเจ เจเจฟเจฐเจชเจพ เจเจฐเจเฉ เจฌเจฟเฉฑเจฒเฉ เจตเฉเจเฉเฅค
python-shell เจตเจฟเฉฑเจ เจจเจตเจพเจ เจเฉ เจนเฉ?
เจฎเฉเจ เจคเฉเจฐเฉฐเจค เจฎเจฟเจ เจเจ เจจเจพเจฒ เจธเจผเฉเจฐเฉ เจเจฐเจพเจเจเจพเฅค
เจเจฎเจพเจเจก เจฆเฉ เจชเฉเจฐเจคเฉ
เจธเจนเจฟเจฎเจค เจนเฉ - เจเจน เจธเฉเจตเจฟเจงเจพเจเจจเจ เจนเฉ เจเจฆเฉเจ เจธเฉฐเจชเจพเจฆเจ/เจเจเจกเฉเจ/เจเจฐเจฎเฉเจจเจฒ เจคเฉเจนเจพเจจเฉเฉฐ เจเจฎเจพเจเจก เจฆเฉ เจจเจพเจฎ เจฒเจ เจชเฉเฉฑเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจเจ เจตเจพเจฐ เจเจพเจฒ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจตเฉ? เจเจธ เจฒเจ เจชเจพเจเจฅเจจ-เจธเจผเฉเจฒ เจนเฉเจฒเฉ-เจนเฉเจฒเฉ เจธเจฎเจพเจจ เจเจพเจฐเจเจธเจผเฉเจฒเจคเจพ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจจ เจตเจฟเฉฑเจ เจคเจฐเฉฑเจเฉ เจเจฐ เจฐเจฟเจนเจพ เจนเฉเฅค เจเจธ เจคเฉฑเจฅ เจฆเฉ เจเจพเจฐเจจ เจเจฟ เจนเฉเฉฑเจก เจฆเฉ เจนเฉเจ เจพเจ เจธเจผเฉเฉฑเจฒ เจเจฒเจพเจธ เจฆเฉ เจซเฉเจฒเจก เจกเฉ-เจซเฉเจเจเฉ เจนเจจ เจจเจพ เจเจฟ เจเจธเจฆเฉ เจซเฉเจฒเจก (เจธเจฐเจฌเจตเจฟเจเจชเฉ __getattr__), เจธเจตเฉ-เจธเฉฐเจชเฉเจฐเจจเจคเจพ เจจเฉเฉฐ เจตเฉ เจธเจเฉเจฐเฉเจ เจคเฉเจ เจฌเจฃเจพเจเจ เจเจฟเจ เจธเฉ (เจเฉเจฐเจฎเจตเจพเจฐ __dir__ เจตเจฟเจงเฉ เจจเฉเฉฐ เจเจตเจฐเจฒเฉเจก เจเจฐเจเฉ)เฅค เจเจเฉเจเฉฐเจชเจฒเจธเจผเจจ เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจ BPython เจ เจคเฉ IPython เจตเจพเจคเจพเจตเจฐเจจ เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค เจฌเฉเจธเจผเฉฑเจ, เจฎเฉเจ PyCharm เจตเจฐเจเฉ เจตเจงเฉเจฐเฉ เจธเจคเจฟเจเจพเจฐเจฏเฉเจ เจเจคเจชเจพเจฆเจพเจ เจจเจพเจฒ เจเจเฉเจเจฐเจฃ เจฆเฉเจเจฃเจพ เจเจพเจนเจพเจเจเจพ, เจ เจคเฉ เจเจธ เจฆเจฟเจธเจผเจพ เจตเจฟเฉฑเจ เจฒเจพเจเฉ เจเจฐเจจ เจฆเฉเจเจ เจธเฉฐเจญเจพเจตเจจเจพเจตเจพเจ เจฆเจพ เจ เจงเจฟเจเจจ เจเฉเจคเจพ เจเจพ เจฐเจฟเจนเจพ เจนเฉเฅค
เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจจเฉเฉฐ เจเฉเฉเจจเจพ
เจฐเฉเจฒเฉเจเจผ เจฆเฉ เจนเจฟเฉฑเจธเฉ เจตเจเฉเจ, เจธเจผเฉเฉฑเจฒ เจเจฒเจพเจธ เจจเฉเฉฐ เจเฉฑเจ เจจเจตเฉเจ เจเจเจฐเฉ_เจเจฎเจพเจเจก เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจชเฉเจฐเจพเจชเจค เจนเฉเจ เจนเฉเฅค เจเจธเจฆเฉ เจเจผเจฐเฉเจฐเจค เจเจธ เจฒเจ เจชเฉเจฆเจพ เจนเฉเจ เจเจฟเจเจเจเจฟ เจเจฆเฉเจ เจเฉฑเจ เจธเจผเฉเฉฑเจฒเจเจเจธเฉเจชเจธเจผเจจ เจเฉฑเจ เจเฉเจฐ-เจเจผเฉเจฐเฉ เจฐเจฟเจเจฐเจจ เจเฉเจก เจจเจพเจฒ เจเฉฑเจ เจเจฎเจพเจเจก เจฆเฉเจเจฐเจพ เจธเฉเฉฑเจเจฟเจ เจเจฟเจ เจธเฉ, เจคเจพเจ เจเจฎเจพเจเจก เจเจฌเจเฉเจเจ เจจเฉเฉฐ __call__() เจเจพเจฒ เจคเฉเจ เจเจฎเจพเจเจก เจเจฌเจเฉเจเจ เจจเฉเฉฐ เจตเจพเจชเจธ เจจเจนเฉเจ เจเฉเจคเจพ เจเจฟเจ เจธเฉเฅค เจนเฉเจฃ เจ เจเจฟเจนเจพ เจเจฐเจจ เจฆเจพ เจเฉฑเจ เจฎเฉเจเจพ เจนเฉ:
try:
command = Shell.touch('/foo.txt')
except ShellException:
command = Shell.last_command
เจเจฎเจพเจเจก เจเจฌเจเฉเจเจ เจฆเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฆเฉ เจธเฉเจเฉ เจตเฉ เจซเฉเจฒ เจเจ เจนเฉเฅค เจเฉฑเจ เจเจฒเจคเฉ เจเฉเจคเจฐ เจธเจผเจพเจฎเจฒ เจเฉเจคเจพ เจเจฟเจ เจนเฉ เจเฉ เจเจฎเจพเจเจก เจเจเจเจชเฉเฉฑเจ เจจเฉเฉฐ เจเจฒเจคเฉ เจธเจเฉเจฐเฉเจฎ เจตเจฟเฉฑเจ เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉเฅค
เจ เจตเฉเจง เจชเจพเจเจฅเจจ เจจเจพเจฎเจพเจ เจจเจพเจฒ เจเจฎเจพเจเจกเจพเจ เจเฉฑเจฒ เจฐเจนเฉเจเจ เจนเจจ
เจฒเจเจญเจ เจนเจฐ เจธเจฟเจธเจเจฎ เจตเจฟเฉฑเจ เจเฉฑเจเฉ-เจเฉฑเจ เจเฉฑเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฟเจธเจฆเจพ เจจเจพเจฎ เจชเจพเจเจฅเจจ เจตเจฟเฉฑเจ เจเฉฑเจ เจชเจเจพเจฃเจเจฐเจคเจพ เจฆเฉ เจคเฉเจฐ 'เจคเฉ เจขเฉเจเจตเจพเจ เจจเจนเฉเจ เจนเฉ (เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจฎเจธเจผเจนเฉเจฐ 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 เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจฌเจฆเจฒเจพเจ เจเฉเจคเฉ เจเจ เจนเจจเฅค เจเจธเจฆเจพ เจเจพเจฐเจจ เจธเจงเจพเจฐเจจ เจนเฉ - เจเจพเจฒเฉ เจธเจฎเฉเจ เจฆเฉ เจเจพเจ, เจเจฟเจธ เจฆเฉเจฐเจพเจจ เจเฉเจ เจธเฉฐเจญเจพเจตเฉ เจธเฉเจงเจพเจฐ (เจเจฆเจพเจนเจฐเจจ เจฒเจ, เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒเจพเจ เจฆเฉ เจธเจตเฉ-เจธเฉฐเจชเฉเจฐเจจเจคเจพ) เจจเฉเฉฐ เจ เจเจฒเฉ เจฐเฉเจฒเฉเจเจผ เจตเจฟเฉฑเจ เจญเฉเจเจฟเจ เจเจฟเจ เจธเฉเฅค
เจ เจธเจฒ เจตเจฟเฉฑเจ, เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจตเจฟเฉฑเจ เจนเฉเจ เจฒเจฟเจเฉ เจฌเจฆเจฒเจพเจ เจเฉเจคเฉ เจเจ เจนเจจ:
- เจฎเจพเจฎเฉเจฒเฉ เจเฉเจก เจซเจฟเจเจธเฅค
- เจฐเฉเจซเฉเจเจเจฐเจฟเฉฐเจ.
- เจฎเฉเจเฉเจฆเจพ เจเฉเจธเจเจพเจ เจฆเจพ เจชเฉเจจเจฐเจเจ เจจ เจ เจคเฉ เจธเฉเจงเจพเจฐเฅค
เจ เจเจฒเฉเจเจ เจฐเฉเจฒเฉเจเจผเจพเจ เจฒเจ เจฏเฉเจเจจเจพเจตเจพเจ
python-shell เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ
- เจเฉเจฐ-เจฌเจฒเจพเจเจฟเฉฐเจ เจเจฎเจพเจเจก เจเจพเจฒเจพเจ เจฒเจ เจธเจฎเจฐเจฅเจจ เจเฉเฉเจจเจพ (เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเฉ เจธเจฎเจพเจจเจคเจพ)เฅค
เจธเจฎเจพเจฐเจ-เจเจจเจตเฉ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ
- ENV เจเจฒเจพเจธ เจตเจฟเฉฑเจ เจตเจพเจคเจพเจตเจฐเจฃ เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจธเจตเฉ-เจชเฉเจฐเจคเฉ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจเจพเฅค
- เจเฉฑเจ env เจตเฉเจฐเฉเจเจฌเจฒ เจฆเฉ เจฎเฉเจเฉเจฆเจเฉ เจฆเฉ เจเจพเจเจ เจเจฐเจจ เจฒเจ เจตเจฟเฉฑเจ เจเจชเจฐเฉเจเจฐ เจฒเจ เจธเจฎเจฐเจฅเจจ.
- ENV เจเจฒเจพเจธ เจฒเจ str() เจ เจคเฉ repr() เจซเฉฐเจเจธเจผเจจเจพเจ เจฒเจ เจธเจฎเจฐเจฅเจจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจเจพเฅค
เจ เจเจฒเฉเจเจ เจฐเฉเจฒเฉเจเจผเจพเจ เจฆเฉเจเจ เจคเจฐเฉเจเจพเจ เจฆเฉ เจเฉเจธเจผเจฃเจพ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจธเฉฐเจเจพเจฐ เจเฉเจจเจฒเจพเจ เจตเจฟเฉฑเจ เจเฉเจคเฉ เจเจพเจตเฉเจเฉ:
เจเฉเจฒเฉเจเฉเจฐเจพเจฎ เจเฉเจจเจฒ (เจเจจเจคเจ) เจเจตเจฟเฉฑเจเจฐ - เจเจธ เจฒเฉเจ เจตเจฟเฉฑเจ เจ เฉฑเจชเจกเฉเจ.
เจธเจฐเฉเจค: www.habr.com