ืžืึทื›ืŸ ืคึผื™ื˜ื”ืึธืŸ ืื•ืŸ ื‘ืึทืฉ ืคืจืขื ื“ืฉื™ืคึผ: ืžืขืœื“ื•ื ื’ ืคื•ืŸ ื“ื™ ืคึผื™ื˜ื”ืึธืŸ-ืฉืึธืœ ืื•ืŸ ืกืžืึทืจื˜-ืขื ื•ื• ื•ื• ืœื™ื™ื‘ืจืขืจื™ื–. 1.0.1

ื’ื•ื˜ืŸ ื˜ืึธื’ ืึทืœืขืžืขืŸ!

ืคืขื‘ืจื•ืืจ ืงืกื ื•ืžืงืก ืงืกื ื•ืžืงืก ื™ืึธืจืŸ ืึธืคื™ืฆื™ืขืœืข ืžื™ืงืจืึธ-ื‘ืึทืคืจื™ื™ึทื•ื ื’ ืคื•ืŸ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืื™ื– ืคืืจื’ืขืงื•ืžืขืŸ 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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’