ืืืื ืืึธื ืึทืืขืืขื!
ืคืขืืจืืืจ ืงืกื ืืืงืก ืงืกื ืืืงืก ืืึธืจื ืึธืคืืฆืืขืืข ืืืงืจืึธ-ืืึทืคืจืืึทืื ื ืคืื ืืืืืืึธืืขืง ืืื ืคืืจืืขืงืืืขื smart-env ะธ ืคึผืืืืึธื-ืฉืึธื. ืคึฟืึทืจ ืื ืืืืก ืืขื ืขื ื ืืฉื ืืื ืืขื ืืืืกื, ืืื ืคึฟืึธืจืฉืืึธืื ืืืจ ืืืืขื ืขื ืขืก ืขืจืฉืืขืจ
ืืื ืงืืจืฅ, ืื ืขื ืืขืจืื ืืขื ืึทืจืืึทื ื ืขืืขื ืืึทืคึฟืขืื ืงืึทืืคึผืืืฉืึทื, ืืงืกืคึผืึทื ืืื ืงืืืคึผืึทืืืืึทืืื ืคึฟืึทืจ ืคืืืกื ืืืง ืงืึทืืึทื ืื, ืขืืืขืืข ืจืขืคืึทืงืืึธืจืื ื ืืื ืืฉืืง ืคืืงืกืื.
ืคึฟืึทืจ ืคืจืืื ืืืืข ืืขื ืงืึทืฅ.
ืืืึธืก ืืื ื ืืึท ืืื ืคึผืืืืึธื-ืฉืึธื?
ืืื ืืืขื ืืืืื ืึธื ืืืืื ืืื ืคืึทืจืืืึทืกื.
ืืึทืคึฟืขืื ืงืึทืืคึผืืืฉืึทื
ืฉืืืืขื - ืขืก ืืื ืืึทืงืืืขื ืืืขื ืืขืจ ืจืขืืึทืงืืึธืจ / IDE / ืืืึธืงืืึทื ืคึผืจืึทืืคึผืก ืืืจ ืคึฟืึทืจ ืื ื ืึธืืขื ืคืื ืื ืืึทืคึฟืขื, ืืื ืืื ืืคืืื ืื ืจืืคื ืคึผืึทืจืึทืืขืืขืจืก? ืึทืืื ืคึผืืืืึธื-ืฉืึธื ืืื ืืืกืืขืืืืืึทื ืคึผืจืึธืืจืขืก ืืื ืคึผืจืึทืืืืืืื ื ืขื ืืขื ืคืึทื ืืงืฉืึทื ืึทืืืื. ืจืขืื ืฆื ืืขื ืคืึทืงื ืึทื ืื ืคืขืืืขืจ ืคืื ืื ืฉืขื ืงืืึทืก ืืื ืืขืจ ืื ืงืึทืคึผืืขืจ ืืขื ืขื ืืข-ืคืึทืงืืึธ ื ืื ืืืื ืคืขืืืขืจ (ืื ืืืขืืืืืง __ืืขืืืจ__), ืึทืืืึธืงืึธืืคึผืืขืืืึธื ืืื ืืืื ืืืฉืืคื ืคึฟืื ืงืจืึทืฆื (ืืืจื ืึธืืืืขืจืืึธืืืื ื ืื __ืืืจ__ ืืืคึฟื, ืจืืกืคึผืขืงืืืืืื). ืึทืืืึธืงืึธืืคึผืืขืืืึธื ืืขืจืืืืึทื ืึทืจืืขื ืืื BPython ืืื IPython ืื ืืืืืจืึทื ืืึทื ืฅ. ืคืื ืงืืจืก, ืืื ืืืึธืื ืืื ืฆื ืืขื ืื ืืึทืืจืืืฉืึทื ืืื ืืขืจ ืขืจืขืืืืืง ืคึผืจืึธืืืงืื ืืื PyCharm, ืืื ืืืคึผืืึทืืขื ืืืืฉืึทื ืคึผืึทืกืึทืืืืึทืืื ืืขื ืขื ืืขืืขืจื ื ืืื ืืขื ืจืืืืื ื.
ืึทืืืื ื ืคึผืจืึธืคึผืขืจืืืขืก
ืืื ืึท ืืืื ืคืื ืืขืจ ืืขืืืื ื, ืื Shell ืงืืึทืก ืืืงืืืขื ืึท ื ืืึทืข last_command ืคืึทืจืืึธื. ืื ื ืืื ืคึฟืึทืจ ืขืก ืืื ืืืืคืืขืฉืืื ืขื ืืืืึทื ืืืขื ืึท ShellException ืืื ืืจืื ืืขืืืืจืคื ืืืจื ืึท ืืึทืคึฟืขื ืืื ืึท ื ืื-ื ืื ืฆืืจืืงืงืืืขื ืงืึธื, ืื ืงืึทืืึทื ื ืืืืคืขืฅ ืืื ื ืืฉื ืืืืืขืงืขืจื ืคึฟืื ืื __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__ () ืืขืืืึธืืก ืคืื ืื ืงืึทืืึทื ื ืงืืึทืก ืืืืคืขืฅ ืืขื ืขื ืืืคึผืืึทืืขื ืึทื, ืืืึธืก ืืืฆื ืคึผืจืึธืืืฆืืจื ืื ืืืึทืืืื ืืืึทืืืขืก (ืึท ืืึทืคึฟืขื ืืื ืคึผืึทืจืึทืืขืืขืจืก ืืื ืืืึทื ืกืืืึธืื ืจืขืืืืืึทื, ืจืืกืคึผืขืงืืืืืื).
- ืืื ืขืจืืืขืจืืืง ืงืึธื ืคืืงืกืื.
- ืึทืืื ื ืคึผืจืึธืืข ืงืึทืืืขืจืืืืฉ, ืืื ืืขืืื ื ืืื ืจืืึธืจืืึทื ืืืืื ื ืืืืืกืืื ื ืึธื ืขืก.
- ืึทืืืื ื ืื ืกืืืคึผืจืึธืกืขืกืก ืืื ืคึผืจืึทืกืขืก ืงืืืกื, ืืขืจ ืฆืื ืคืื ืืืึธืก ืืื ืฆื ืฉืึทืคึฟื ืึทื ื ืึธื ืึทืืกืืจืึทืงืฆืืข ืืืจืื ืืืขื ืืจืืขืื ืืื ืื ืกืืืคึผืจืึธืกืขืก ืืึธืืืืข. ืืขืจืกืื ืก ืืืจืฃ ืฆื ืขืืืืื ืืจื ืงืึธื ืืืคึผืืืงืึทืืืึธื ืืืขื ืืจืืขืื ืืื Python 2/3, ืึธืืขืจ ืงืขื ืขื ืคึผืึทืืขื ืืฉืึทืื ืฆืืฉืืขืื ืื ืืขืจืข ืืึธื ืืกืขืก ืืืื.
ืืืึธืก ืืื ื ืืึท ืืื smart-env?
ื ืื ืขื ืืขื ืคึผืืืืึธื-ืฉืึธื, ืขืก ืืขื ืขื ืืขืืืขื ืืืืื ืืงืขืจืข ืขื ืืขืจืื ืืขื ืืื ืื ืกืืึทืจื-ืขื ืื ืืืืืืึธืืขืง. ืื ืกืืื ืคึฟืึทืจ ืืขื ืืื ืคึผืฉืื - ืคืขืื ืคืื ืคืจืื ืฆืืื, ืืขืฉืึทืก ืืืึธืก ืขืืืขืืข ืคึผืึธืืขื ืฆืืขื ืืืคึผืจืืืืืึทื ืฅ (ืืืฉื ืึทืืืึธืงืึธืืคึผืืขืืืึธื ืคืื ืื ืืืืืจืึทื ืืขื ืึทื ืืืขืจืืึทืืึทืื) ืืขื ืขื ืืจืืืขืจืืขืคืืจื ืฆื ืืขืจ ืืืืึทืืขืจ ืืขืืืื ื.
ืืื ืคืึทืงื, ืื ืคืืืืขื ืืข ืขื ืืขืจืื ืืขื ืืขื ืขื ืืขืืืื ืฆื ืืขืจ ืืืืืืึธืืขืง:
- ืืื ืขืจืืืขืจืืืง ืงืึธื ืคืืงืกืื.
- ืจืขืคืึทืงืืืจืื ื.
- ืจืืึธืจืืึทื ืึทืืืืฉืึทื ืืื ืจืึทืคืื ืืจืืงืืึทื ืคืื ืืืืืกืืื ื ืืขืกืฅ.
ืคึผืืึทื ื ืคึฟืึทืจ ืืืืึทืืขืจ ืจืืืืกืื
ืคึผืืืืึธื-ืฉืึธื ืืืืืืึธืืขืง
- ืึทืืื ื ืฉืืืฆื ืคึฟืึทืจ ื ืื-ืืืึทืงืื ื ืืึทืคึฟืขืื ืงืึทืืืก (ืคึผืึทืจืึทืืขืืืืึทืืืึธื ืคืื ืืืจืืคืืจืื ื).
ืกืืึทืจื-ืขื ืื ืืืืืืึธืืขืง
- ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืึทืืืึธืงืึธืืคึผืืขืืืึธื ืคืื ืกืืืืืืข ืืืขืจืืึทืืึทืื ืืื ืื ENV ืงืืึทืก.
- ืฉืืืฆื ืคึฟืึทืจ ืื ืืื ืึธืคึผืขืจืึทืืึธืจ ืฆื ืงืึธื ืืจืึธืืืจื ืื ืขืงืืืกืืขื ืฅ ืคืื ืึทื ืขื ืื ืืืึทืืขืืืืืง.
- ืืืคึผืืึทืืขื ืืืืฉืึทื ืคืื ืฉืืืฆื ืคึฟืึทืจ ืื ืกืืจ () ืืื ืจืขืคึผืจ () ืคืึทื ืืงืฉืึทื ื ืคึฟืึทืจ ืื ENV ืงืืึทืก.
ืื ืืึทืืขืก ืคืื ืื ืืืืึทืืขืจ ืจืืืืกืื ืืืขื ืืืื ืืืืืข ืืื ืื ืคืืืืขื ืืข ืงืึธืืื ืืงืึทืฆืืข ืืฉืึทื ืึทืื:
ืืขืืขืืจืึทื ืงืึทื ืึทื (ืฆืืืืจ) ืืืืืืืขืจ - ืืขืจืืืึทื ืืืงื ืืื ืืขื ืึทืจืืืงื.
ืืงืืจ: www.habr.com