αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž˜αž·αžαŸ’αžαž—αžΆαž– Python αž“αž·αž„ BashαŸ– smart-env αž“αž·αž„ python-shell libraries

αžαŸ’αž„αŸƒαž›αŸ’αž’αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαŸ”

αžŸαž–αŸ’αžœαžαŸ’αž„αŸƒαž“αŸαŸ‡ Python αž‚αžΊαž‡αžΆαž—αžΆαžŸαžΆαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αž“αŸ„αž˜αž—αžΆαžŸαžΆαžŠαŸ‚αž›αž”αŸ’αžšαžΎαž…αŸ’αžšαžΎαž“αž”αŸ†αž•αž»αžαž€αŸ’αž“αž»αž„αžœαž·αžŸαŸαž™αž”αž„αŸ’αž€αžΎαžαž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž•αž›αž·αžαž•αž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αž›αž½αž“αž―αž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž αŸαžŠαŸ’αž‹αžΆαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž•αž„αžŠαŸ‚αžšαŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž’αŸ’αž“αž€αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž‡αžΆαž…αŸ’αžšαžΎαž“ αžŠαŸ„αž™αž†αž“αŸ’αž‘αŸˆαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸ αž¬αž”αŸ’αžšαž†αžΆαŸ†αž„αž“αžΉαž„αžœαžΆ αžαŸ’αžšαžΌαžœαžšαŸ€αž“αž—αžΆαžŸαžΆαžαŸ’αž˜αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž‡αžΆαž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ…αž›αžΎαž’αž€αŸ’αžŸαžš Bash αž…αžΆαžŸαŸ‹αžŠαŸαž›αŸ’αž’αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ Bash αž“αž·αž„ Python αž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αžΌαžŠ αž αžΎαž™αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž˜αž½αž™αž…αŸ†αž“αž½αž“ αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸαž™αžαžΆαž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž’αž€αŸ’αžŸαžš Bash αž‘αŸ…αž‡αžΆ "αž—αžΆαžŸαžΆαž–αžŸαŸ‹" αž–αŸαž›αžαŸ’αž›αŸ‡αžœαžΆαž”αŸ’αžšαŸ‚αžαžΆαž‡αžΆαž€αž·αž…αŸ’αž…αž€αžΆαžšαžŠαŸαž˜αžΆαž“αžαžΆαž˜αž–αž› αž“αž·αž„αž†αŸ’αž„αžΆαž™αž–αžΈαž€αž·αž…αŸ’αž…αž€αžΆαžšαžαžΌαž…αžαžΆαž…αŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž±αŸ’αž™αž‡αžΈαžœαž·αžαž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ devops αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ αž“αž·αž„αž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„ Python αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„ αž“αž·αž„αž”αž“αŸ’αžαž”αž„αŸ’αž€αžΎαžαŸ” αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡αž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžαŸ’αž˜αžΈαž…αŸ†αž“αž½αž“αž–αžΈαžšαžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž“αŸƒαž”αŸ’αžšαž€αžΆαžŸαž“αŸαŸ‡ - αžœαŸƒαž†αŸ’αž›αžΆαž ΠΈ python-shell - αž“αž·αž„αžšαž…αž“αžΆαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αž’αžΌαžšαž”αž“αŸ’αžαž™αž€αžΆαžšαž›αŸ‡αž”αž„αŸ‹αž–αžΈαžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž€αŸ’αž“αž»αž„αž€αžΆαžšαž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž…αŸ’αžšαžΎαž“αž…αŸ†αž–αŸ„αŸ‡αž—αžΆαž–αžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ Python αžŠαŸ„αž™αž‘αž»αž€αž€αž“αŸ’αž›αŸ‚αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž·αž…αŸ’αž…αž€αžΆαžšαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαŸ” αžœαž·αžŸαžΆαž›αž—αžΆαž–αž“αŸƒαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžšαž”αžŸαŸ‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‚αžΊαž‡αžΆαž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“ αž“αž·αž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžαžΆαž„αž€αŸ’αžšαŸ…αŸ”

αž’αŸ’αž“αž€αžŽαžΆαž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸ αžŸαžΌαž˜αž˜αžΎαž›αž†αŸ’αž˜αžΆαŸ”

"αž€αž„αŸ‹" αžαŸ’αž˜αžΈ?

αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž”αž„αŸ’αž€αžΎαžαž€αž‰αŸ’αž…αž”αŸ‹αžαŸ’αž˜αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž’αž˜αŸ’αž˜αžαžΆαžŠαŸ„αž™αžŸαŸ’αž˜αžΎαž—αžΆαž–? αžαžΎαž’αŸ’αžœαžΈαžšαžΆαžšαžΆαŸ†αž„αž’αŸ’αž“αž€αž–αžΈαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ os.environ αž“αž·αž„ subprocessαŸ” αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹?

αžαŸ’αž‰αž»αŸ†β€‹αž“αžΉαž„β€‹αž•αŸ’αžαž›αŸ‹β€‹αž—αžŸαŸ’αžαž»αžαžΆαž„β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž”αžŽαŸ’αžŽαžΆαž›αŸαž™β€‹αž“αžΈαž˜αž½αž™αŸ—β€‹αžŠαŸ„αž™β€‹αž‘αŸ‚αž€β€‹αž–αžΈβ€‹αž‚αŸ’αž“αžΆαŸ”

αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ smart-env

αž˜αž»αž“αž–αŸαž›αžŸαžšαžŸαŸαžšαž‚αŸ†αž“αž·αžαž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αžœαžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αž αž“αž·αž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž˜αžΆαž“αž αžΆαž“αž·αž—αŸαž™αž“αŸƒαž€αžΆαžšαž˜αž·αž“αžŸαŸ’αžœαŸ‚αž„αžšαž€αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž‚αžΊαž‡αžΆ "αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž’αžΆαž“αžΆαžšαŸ‰αžΆαž”αŸ‹αžšαž„" αŸ” αžαžΆαž˜αž€αŸ’αž”αž½αž“αž˜αž½αž™αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž“αž·αž„αžŸαž“αŸ’αžŸαŸ†αžŸαŸ†αž…αŸƒαž–αŸαž›αžœαŸαž›αžΆαž“αž·αž„αž€αžΆαžšαžαŸ†αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ”

αž“αŸαŸ‡β€‹αž”αžΎβ€‹αžαžΆαž˜β€‹αž›αž‘αŸ’αž’αž•αž› αžŸαŸ’αžœαŸ‚αž„αžšαž€ αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αŸ–

  • αž˜αžΆαž“αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αž–αž·αžαž‡αžΆαžšαž»αŸ†αž€αžΆαžšαž αŸ…αž‘αŸ…αž€αžΆαž“αŸ‹ os.environ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž˜αžΆαž“αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžšαŸ†αžαžΆαž“αž‡αžΆαž…αŸ’αžšαžΎαž“ (αž”αž„αŸ’αž€αžΎαžαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹ αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž–αž·αžŸαŸαžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αŸ”αž›αŸ”);
  • αž˜αžΆαž“αž€αž‰αŸ’αž…αž”αŸ‹αž›αŸ’αž’αžŠαŸ‚αž›αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž„αž™αŸ‰αžΆαž„αžαžΉαž„αžšαžΉαž„αž‘αŸ…αž“αžΉαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αŸαž€αžΌαž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž˜αž½αž™ (αž‡αžΆαž…αž˜αŸ’αž”αž„αž€αŸ’αžšαž”αžαŸαžŽαŸ’αžŒαž”αžŽαŸ’αžŠαžΆαž‰αžŠαžΌαž…αž‡αžΆ Django) αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™αž˜αž·αž“αž˜αžΆαž“αž›αž€αŸ’αžαžŽαŸˆαž‡αžΆαžŸαž€αž›αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž―αž€αžŸαžΆαžšαž‘αŸαŸ”
  • αž˜αžΆαž“αž€αžΆαžšαž”αŸ‰αž»αž“αž”αŸ‰αž„αžŠαŸαž€αž˜αŸ’αžšαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž˜αžΈαŸ” αž§αž‘αžΆαž αžšαžŽαŸ, αž”αž“αŸ’αžαŸ‚αž˜αž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžš αž“αž·αž„αž‰αŸ‚αž€αžαž˜αŸ’αž›αŸƒαž’αžαŸαžšαž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αžŠαŸ„αž™αž αŸ…αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŠαžΌαž…αž‡αžΆ
    get_<typename>(var_name)

    αž¬αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αž½αž™αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αž“αŸαŸ‡αž€αŸ’αžαžΈ αž˜αž·αž“αž‚αžΆαŸ†αž‘αŸ’αžš Python 2 αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž’αžΆαž”αŸ‹αž±αž“αž‘αŸ (αžŠαŸ‚αž›αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆ αž•αŸ’αž›αžΌαžœαž€αžΆαžš R.I.P.αž“αŸ…αžαŸ‚αž˜αžΆαž“αž—αŸ’αž“αŸ†αž“αŸƒαž€αžΌαžŠαžŸαžšαžŸαŸαžš αž“αž·αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αŸαž€αžΌαž‘αžΌαžŸαŸŠαžΈαž‘αžΆαŸ†αž„αž˜αžΌαž›);

  • αž˜αžΆαž“αžŸαž·αž”αŸ’αž”αž€αž˜αŸ’αž˜αžŸαž·αžŸαŸ’αžŸαžŸαžΆαž›αžΆ αžŠαŸ‚αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αžŠαŸ‚αž›αž˜αž·αž“αžŸαŸ’αž‚αžΆαž›αŸ‹αž˜αž½αž™αž…αŸ†αž“αž½αž“αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ PyPI αžαžΆαž„αž›αžΎ αž αžΎαž™αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž”αž„αŸ’αž€αžΎαžαž”αž‰αŸ’αž αžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŠαžΆαž€αŸ‹αžˆαŸ’αž˜αŸ„αŸ‡αž€αž‰αŸ’αž…αž”αŸ‹αžαŸ’αž˜αžΈ (αž‡αžΆαž–αž·αžŸαŸαžŸαžˆαŸ’αž˜αŸ„αŸ‡ "smart-env" αž‚αžΊαž‡αžΆαžœαž·αž’αžΆαž“αž€αžΆαžšαž…αžΆαŸ†αž”αžΆαž…αŸ‹) αŸ”

αž αžΎαž™αž”αž‰αŸ’αž‡αžΈαž“αŸαŸ‡αž’αžΆαž…αž”αž“αŸ’αžαž”αžΆαž“αž™αžΌαžšαŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž…αŸ†αž“αž»αž…αžαžΆαž„αž›αžΎαž‚αžΊαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž αžΎαž™αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž’αŸ„αž™αžαŸ’αž‰αž»αŸ†αžšαŸ†αž—αžΎαž”αž…αŸ†αž–αŸ„αŸ‡αž‚αŸ†αž“αž·αžαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž“αž·αž„αž‡αžΆαžŸαž€αž›αŸ”

αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αž˜αž»αž“αž–αŸαž›αžŸαžšαžŸαŸαžš smart-envαŸ–

  • αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ†αž•αž»αžαŸ”
  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαžœαžΆαž™αž”αž‰αŸ’αž…αžΌαž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž’αžΆαž…αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžΆαž“αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›
  • αž†αž”αž‚αŸ’αž“αžΆ Python 2.7
  • αž€αžΆαžšαž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž›αŸαžαž€αžΌαžŠαž›αŸ’αž’αžŠαŸ„αž™αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž

αž“αŸ…αž‘αžΈαž”αŸ†αž•αž»αž αž’αŸ’αžœαžΈαŸ—αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αŸ” αž“αŸαŸ‡αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ–

from smart_env import ENV

print(ENV.HOME)  # Equals print(os.environ['HOME'])

# assuming you set env variable MYVAR to "True"

ENV.enable_automatic_type_cast()

my_var = ENV.MY_VAR  # Equals boolean True

ENV.NEW_VAR = 100  # Sets a new environment variable

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰αž–αžΈαž§αž‘αžΆαž αžšαžŽαŸ αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžαŸ’αž“αžΆαž€αŸ‹αžαŸ’αž˜αžΈ αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž“αžΆαŸ†αž…αžΌαž›αžœαžΆ (αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αž„αŸ’αž€αžΎαžαž§αž‘αžΆαž αžšαžŽαŸαž‘αŸ - αžŠαž€αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž”αž“αŸ’αžαŸ‚αž˜)αŸ” αž€αžΆαžšαž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αžŽαžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αžŠαŸ„αž™αžŸαŸ†αžŠαŸ…αž‘αŸ…αž›αžΎαžœαžΆαžαžΆαž‡αžΆαž’αžαŸαžšαž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹ ENV αžŠαŸ‚αž›αžαžΆαž˜αž–αž·αžαž’αŸ’αžœαžΎαž±αŸ’αž™αžαŸ’αž“αžΆαž€αŸ‹αž“αŸαŸ‡αž€αŸ’αž›αžΆαž™αž‡αžΆαž€αž‰αŸ’αž…αž”αŸ‹αžœαž·αž…αžΆαžšαžŽαž‰αžΆαžŽαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αžšαž·αžŸαŸ’αžαžΆαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαžΎαž˜ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž€αŸ’αž“αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΆαž›αž‚αŸ’αž“αžΆαž”αž„αŸ’αžœαŸ‚αžšαžœαžΆαž‘αŸ…αž‡αžΆαžœαžαŸ’αžαž»αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‚αŸ’αžšαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ ( αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž“αŸ…αž€αŸ’αž“αž»αž„ Django αž˜αžΆαž“αžαŸ‚αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž‘αŸαžŠαŸ‚αž›αžœαžαŸ’αžαž»αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‚αžΊαž‡αžΆαž˜αŸ‰αžΌαžŒαž»αž›/αž€αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžαŸ’αž›αž½αž“αžœαžΆ)αŸ”

αž€αžΆαžšαž”αžΎαž€/αž”αž·αž‘αž˜αž»αžαž„αžΆαžšαž‡αŸ†αž“αž½αž™αž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž–αžΈαžš - enable_automatic_type_cast() αž“αž·αž„ disable_automatic_type_cast() αŸ” αž“αŸαŸ‡αž’αžΆαž…αž‡αžΆαž€αžΆαžšαž„αžΆαž™αžŸαŸ’αžšαž½αž› αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αž˜αžΆαž“αžœαžαŸ’αžαž»αžŠαžΌαž… JSON αžŸαŸ€αžšαŸ€αž› αž¬αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαžαŸαžš Boolean (αž€αŸ†αžŽαžαŸ‹αž’αžαŸαžš DEBUG αž“αŸ…αž€αŸ’αž“αž»αž„ Django αžŠαŸ„αž™αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž’αžαŸαžšαž”αžšαž·αžŸαŸ’αžαžΆαž“αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš "αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ" αž‚αžΊαž‡αžΆαž€αžšαžŽαžΈαž˜αž½αž™αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž€αžšαžŽαžΈαž‘αžΌαž‘αŸ…αž”αŸ†αž•αž»αž) αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž₯αž‘αžΌαžœαž“αŸαŸ‡αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž”αŸ†αž”αŸ’αž›αŸ‚αž„αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαž…αŸ’αž”αžΆαžŸαŸ‹αž›αžΆαžŸαŸ‹αž‘αŸ αžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž€αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αž˜αŸ’αžšαŸ…αž“αŸƒαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžšαž½αž…αž αžΎαž™ αž αžΎαž™αž€αŸ†αž–αž»αž„αžšαž„αŸ‹αž…αžΆαŸ†αžŸαž‰αŸ’αž‰αžΆαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αŸ” πŸ™‚ αž‡αžΆαž‘αžΌαž‘αŸ… αž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž€αž”αžŠαŸ„αž™αžαž˜αŸ’αž›αžΆαž—αžΆαž– αž“αž·αž„αž‚αžΆαŸ†αž‘αŸ’αžšαžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‚αŸ’αžšαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ (αž‡αžΆαž”αŸ‹αž‚αžΆαŸ†αž„ αžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰ αž“αž·αž„αž”αŸƒαž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžΆαž€αž›αŸ’αž”αž„αž‘αŸ)αŸ”

αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž‚αžΆαŸ†αž‘αŸ’αžš Python 2 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŠαŸ„αž™αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž›αŸ‡αž”αž„αŸ‹ (αž€αžΆαžšαž”αŸ„αŸ‡αž”αž„αŸ‹αž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžš αž“αž·αž„ "αžŸαŸ’αž€αžšαž‚αŸ’αžšαžΆαž”αŸ‹" αž˜αž½αž™αž…αŸ†αž“αž½αž“αž“αŸƒαž€αŸ†αžŽαŸ‚αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž”αŸ†αž•αž»αžαžšαž”αžŸαŸ‹ Python 3) αž‡αžΆαž–αž·αžŸαŸαžŸαž’αžšαž‚αž»αžŽαžŠαž›αŸ‹αž‘αžΈαž”αŸ’αžšαžΆαŸ†αž˜αž½αž™ (αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸƒαž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ metaclasses )

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αž€αžΆαžšαžšαžΉαžαž”αž“αŸ’αžαžΉαž„αž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ–

  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš Python 3 αž˜αžΆαž“αž“αŸαž™αžαžΆαž€αŸ†αžŽαŸ‚ 3.5 αž“αž·αž„αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡ (αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αžΊαž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž—αžΆαž–αžαŸ’αž‡αž·αž› αž¬αž€αž„αŸ’αžœαŸ‡αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’ αžŠαŸ„αž™αžŸαžΆαžšαžœαžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž αŸαžαž»αž•αž›αžŠαŸ‚αž›αžαžΆαž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž’αŸ’αž“αž€αž“αŸ…αžαŸ‚αž“αŸ…αž›αžΎ 3.4);
  • αž“αŸ…αž€αŸ’αž“αž»αž„ Python 2.7 αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž˜αž·αž“αž‚αžΆαŸ†αž‘αŸ’αžš deserialization αž“αŸƒαž–αŸ’αž™αž‰αŸ’αž‡αž“αŸˆαž€αŸ†αžŽαžαŸ‹αž‘αŸαŸ” αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆ αž“αŸ…αž‘αžΈαž“αŸαŸ‡. αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž…αž„αŸ‹αž’αž“αž»αžœαžαŸ’αžαžœαžΆαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αžœαžΆαž‚αž˜αž“αŸ :);

αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž€αŸαž˜αžΆαž“αž™αž“αŸ’αžαž€αžΆαžšαž›αžΎαž€αž›αŸ‚αž„αž•αž„αžŠαŸ‚αžš αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž˜αžΆαž“αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžœαž·αž—αžΆαž‚αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎβ€‹αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšβ€‹αž˜αž·αž“αž’αžΆαž…β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž‘αž‘αž½αž›αžŸαŸ’αž‚αžΆαž›αŸ‹β€‹αžŠαŸ„αž™β€‹αž’αŸ’αž“αž€αžœαž·αž—αžΆαž‚β€‹αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αžŽαžΆαž˜αž½αž™β€‹αž‘αŸ αžαž˜αŸ’αž›αŸƒβ€‹αž“αŸ…αžαŸ‚β€‹αž‡αžΆβ€‹αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžš (αž‡αžΆαž‡αžΆαž„β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž αŸαžαž»αž•αž›β€‹αž“αŸƒβ€‹αž—αžΆαž–αž„αžΆαž™αžŸαŸ’αžšαž½αž› αž“αž·αž„β€‹αž—αžΆαž–β€‹αžαŸ’αžšαžΌαžœβ€‹αž‚αŸ’αž“αžΆβ€‹αžαž™αž€αŸ’αžšαŸ„αž™β€‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„β€‹αžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆβ€‹αž’αž˜αŸ’αž˜αžαžΆβ€‹αž“αŸƒβ€‹αžšαž”αŸ€αž”β€‹αžŠαŸ‚αž›β€‹αž’αžαŸαžšβ€‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšβ€‹αž“αŸ…αž€αŸ’αž“αž»αž„ Bash)αŸ”

αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ python-shell

αž₯αž‘αžΌαžœαž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž’αŸ†αž–αžΈαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‘αžΈαž–αžΈαžš (αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž›αž»αž”αž…αŸ„αž›αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž’αŸ†αž–αžΈαž…αŸ†αžŽαž»αž…αžαŸ’αžœαŸ‡αžαžΆαžαž“αŸƒ analogues αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹ - αžœαžΆαžŸαŸ’αžšαžŠαŸ€αž„αž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ smart-env αŸ” αž’αžΆαžŽαžΆαž‘αžΌαž€ - αž“αŸ…αž‘αžΈαž“αŸαŸ‡ ΠΈ αž“αŸ…αž‘αžΈαž“αŸαŸ‡).

αž‡αžΆαž‘αžΌαž‘αŸ… αž‚αŸ†αž“αž·αžαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž αž“αž·αž„αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž‘αŸ…αž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ smart-env αžŠαžΌαž…αžŠαŸ‚αž›αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž–αžΈαž§αž‘αžΆαž αžšαžŽαŸαŸ–

from python_shell import Shell

Shell.ls('-l', '$HOME')  # Equals "ls -l $HOME"

command = Shell.whoami()  # Equals "whoami"
print(command.output)  # prints your current user name

print(command.command)  # prints "whoami"
print(command.return_code)  # prints "0"
print(command.arguments)  # prints ""

Shell.mkdir('-p', '/tmp/new_folder')  # makes a new folder

αž‚αŸ†αž“αž·αžαž“αŸαŸ‡αž‚αžΊαŸ–

  1. αžαŸ’αž“αžΆαž€αŸ‹αžαŸ‚αž˜αž½αž™αžŠαŸ‚αž›αžαŸ†αžŽαžΆαž„αž±αŸ’αž™ Bash αž“αŸ…αž€αŸ’αž“αž»αž„αž–αž·αž—αž– Python;
  2. αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ Bash αž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆαž‡αžΆαž˜αž»αžαž„αžΆαžšαž“αŸƒαžαŸ’αž“αžΆαž€αŸ‹ Shell αŸ”
  3. αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž αŸ…αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ Bash αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαŸ”
  4. αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αžΈαž˜αž½αž™αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· "αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž“αž·αž„αž₯αž‘αžΌαžœαž“αŸαŸ‡" αž“αŸ…αž–αŸαž›αž“αŸαŸ‡αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ, i.e. αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš;
  5. αžœαžΆαž‚αžΊαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΌαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ stdout αž€αŸαžŠαžΌαž…αž‡αžΆαž›αŸαžαž€αžΌαžŠαžαŸ’αžšαž‘αž”αŸ‹αž˜αž€αžœαž·αž‰αžšαž”αžŸαŸ‹αžœαžΆ;
  6. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž·αž“αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αŸ αž€αžΆαžšαž›αžΎαž€αž›αŸ‚αž„αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ„αŸ‡αž…αŸ„αž›αŸ”

αžŠαžΌαž…αž‘αŸ…αž“αžΉαž„ smart-env αžŠαŸ‚αžš αžœαžΆαž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Python 2 (αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαžˆαžΆαž˜αž”αžΌαž‡αžΆαžαž·αž…αžαž½αž…αž€αŸαžŠαŸ„αž™) αž“αž·αž„αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Python 3.0-3.4 αž‘αŸαŸ”

αž•αŸ‚αž“αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž”αžŽαŸ’αžŽαžΆαž›αŸαž™

αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž₯αž‘αžΌαžœαž“αŸαŸ‡αŸ– αž‘αžΆαŸ†αž„αž–αžΈαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž„αŸ’αž αŸ„αŸ‡αž“αŸ…αž›αžΎ PyPI αž•αŸ’αž›αžΌαžœαž€αžΆαžšαŸ” αž”αŸ’αžšαž—αž–αž˜αžΆαž“αž“αŸ…αž›αžΎ Github (αžŸαžΌαž˜αž˜αžΎαž›αžαžΆαž„αž€αŸ’αžšαŸ„αž˜)αŸ”

αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αž‘αžΆαŸ†αž„αž–αžΈαžšαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž—αž·αžœαžŒαŸ’αžαžŠαŸ„αž™αž‚αž·αžαž‚αžΌαžšαž–αžΈαž˜αžαž·αž€αŸ‚αž›αž˜αŸ’αž’αžŠαŸ‚αž›αž”αŸ’αžšαž˜αžΌαž›αž”αžΆαž“αž–αžΈαž’αŸ’αž“αž€αžŠαŸ‚αž›αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαŸ” αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž˜αž»αžαž„αžΆαžšαžαŸ’αž˜αžΈαŸ—αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„ smart-env αž“αŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„ python-shell αž–αž·αžαž‡αžΆαž˜αžΆαž“αž’αŸ’αžœαžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αž“αŸ’αžαŸ‚αž˜αŸ–

  • αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαŸαž–αŸ’αž‘αžŠαŸ‚αž›αž˜αž·αž“αžšαžΆαžšαžΆαŸ†αž„;
  • αž›αž‘αŸ’αž’αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž‘αŸ†αž“αžΆαž€αŸ‹αž‘αŸ†αž“αž„αž’αž“αŸ’αžαžšαž€αž˜αŸ’αž˜αž‡αžΆαž˜αž½αž™αž€αŸ’αžšαž»αž˜ (αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™ stdin);
  • αž€αžΆαžšαž”αž“αŸ’αžαŸ‚αž˜αž›αž€αŸ’αžαžŽαŸˆαžŸαž˜αŸ’αž”αžαŸ’αžαž·αžαŸ’αž˜αžΈ (αž§αž‘αžΆαž αžšαžŽαŸ αž‘αŸ’αžšαž–αŸ’αž™αžŸαž˜αŸ’αž”αžαŸ’αžαž·αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αž›αž‘αŸ’αž’αž•αž›αž–αžΈ stderr);
  • αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžαžαž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž˜αžΆαž“ (αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžΎαž‡αžΆαž˜αž½αž™αž˜αž»αžαž„αžΆαžš dir());
  • αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸ…αž›αžΎαŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαž™αŸ„αž„

  1. αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ smart-envαŸ– Github ΠΈ αž—αžΈαž—αžΈαž’αžΆαž™αŸ”
  2. αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ python-shellαŸ– Github ΠΈ αž—αžΈαž—αžΈαž’αžΆαž™αŸ”
  3. αž†αžΆαž“αŸ‚αž› Telegram αž€αžΆαžšαž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž”αžŽαŸ’αžŽαžΆαž›αŸαž™

UPD 23.02.2020αŸ–
* αžƒαŸ’αž›αžΆαŸ†αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈ αžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–
* αž€αŸ†αžŽαŸ‚ python-shell==1.0.1 αž€αŸ†αž–αž»αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαŸ€αž”αž…αŸ†αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸ…αžαŸ’αž„αŸƒαž‘αžΈ 29.02.2020/XNUMX/XNUMXαŸ” αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžšαž½αž˜αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ†αž–αŸαž‰αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž“αž·αž„αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ dir(Shell) αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽ Python αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ αž“αž·αž„αž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž€αŸ†αž αž»αžŸαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹