ืืื ืืื ืืืืื.
ืืืื, Python ืืื ืืืช ืืฉืคืืช ืื ืคืืฆืืช ืืืืชืจ ืืชืืื ืฉื ืืฆืืจืช ืื ืจืง ืืืฆืจื ืชืืื ื ืืขืฆืื, ืืื ืื ืืกืคืงืช ืืชืฉืชืืช ืฉืืื. ืืชืืฆืื ืืื, ื ืืืฆื devops ืจืืื, ืืื ืื ืืจืฆืื ื ืื ื ืืื, ืืืืื ืฉืคื ืืืฉื ืืฉืืืืฉ ืืืืืจ ืืืชืจ ืืชืืกืคืช ืืชืกืจืืืื ืืืฉื ืื ืืืืืืื ืฉื ืืฉ. ืขื ืืืช, Bash ื-Python ืืฆืืืจืื ืขื ืืืฉืืช ืฉืื ืืช ืืืชืืืช ืงืื ืืืฉ ืืื ืชืืื ืืช ืืกืืืืืช, ืืืืืจ ืืขืืจื ืฉื ืกืงืจืืคืืื ืฉื Bash ื"ืฉืคืช ืื ืืฉ" ืืชืืื ืืคืขืืื ืืืฉืืื ืจืืืช ืืืงืฃ ืืจืืืงื ืืืืืืช ืืจืืืืืืืืช.
ืืื ืืืงื ืขื ืืืืื ืฉื devops, ืกืคืจืืืช ืืืื ืขืืจ ืฉืืืืฉืืื ืจืืื ื-Python ื ืืฆืจื ืืืืฉืืืื ืืืืืืฆืจ. ืืืืจ ืื ืืชืืจ ืฉืชื ืกืคืจืืืช ืืืฉืืช ืฉื ืืฆืจื ืขื ืืื ืืืืจ ืืคืืกื ืืื -
ืื ืฉืืขืื ืืื, ืืืงืฉื ืืจืืืช ืืชืื.
"ืืืคื ืืื" ืืืฉืื?
ื ืจืื, ืืืืข ืืืฆืืจ ืืืืืืช ืืืฉืืช ืืคืขืืืืช ืจืืืืืช ืืืื? ืื ืืื ืข ืืื ืืืฉืชืืฉ ื-os.environ ืื-subprocess.<ืฉืืื ืื ืืืืงื ืืืืืจืชื> ืืฉืืจืืช?
ืืืื ืืืืืืช ืืืืืช ืื ืืืช ืืืกืคืจืืืช ืื ืคืจื.
ืกืคืจืืืช smart-env
ืืคื ื ืืชืืืช ืืืืืช ืืฉืื, ืืืื ืืืืื ืก ืืืื ืืจื ื ืืืืคืฉ ืคืชืจืื ืืช ืืืื ืื. ืืืืื, ืืฉ ืกืืืื ืฉืื ืชืืฆื ืืช ืื ืฉืืชื ืฆืจืื, ืืื ืื ืืืืงื "ืืืจืืข ืืืืื". ืืืื, ืืืฉื ืื ืขืืืืช ืืืืกืืช ืืจืื ืืื ืืืืืฅ.
ืืคื ืืชืืฆืืืช
- ืืฉื ื ืืืืืืช ืฉืืขืฆื ืขืืืคืืช ืงืจืืืืช ื-os.environ, ืื ืืืงืืื ืืืจืฉืืช ืฆืจืืจ ืคืขืืืืช ืืกืืืืช ืืขืช (ืืฆืืจืช ืืืคืข ืฉื ืืืืงื, ืคืจืืืจืื ืืืืืืื ืืงืจืืืืช ืืื');
- ืืฉื ื ืืืืืืช ืืืืืช, ืืฉืจ, ืขื ืืืช, ืงืฉืืจืืช ืืงืคืื ืืช ืืืงืืกืืกืื ืกืคืฆืืคื (ืืขืืงืจ ืืกืืจืืช ืืื ืืจื ื ืืื Django) ืืืื ืืื ื ืืื ืืืจืกืืืืืช ืืื ืืื ืงืืืฅ;
- ืืฉ ื ืืกืืื ืืช ื ืืืจืื ืืขืฉืืช ืืฉืื ืืืฉ. ืืืืืื,
ืืืืกืืฃ ืืงืืื ืืื ืชื ืืืืคื ืืคืืจืฉ ืขืจืื ืืฉืชื ืื ืขื ืืื ืงืจืืื ืืฉืืืืช ืืืget_<typename>(var_name)
ืื ืคื
ืขืื ืคืชืจืื ืืื , ืืฉืจ, ืขื ืืืช, ืืื ื ืชืืื ื-Python 2 ืืืืฉืืช ืืขืช (ืฉืืืจืืชRIP ืจืฉืื , ืืฉ ืขืืืื ืืจืื ืฉื ืงืื ืืชืื ืืืขืจืืืช ืืงืืืืืืืช ืฉืืืืช); - ืืฉื ื ืขืืืืืช ืืฆืืจื ืฉื ืชืืืืื ืืืช ืกืคืจ ืฉืืกืืื ืื ืืืืขื ืืืืขื ื-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 ืืกืืืจ ืื ืืคืืื ืจืง ืงืืืข ืืืืืื ื (ืืืืจื ืืคืืจืฉืช ืฉื ืืืฉืชื ื DEBUG ื-Django ืขื ืืื ืืฉืืืืช ืืฉืชื ื ืืกืืืื ืขื ืืืจืืืืช "ืชืงืคืืช" ืืื ืืื ืืืงืจืื ืื ืคืืฆืื ืืืืชืจ). ืืื ืขืืฉืื ืืื ืฆืืจื ืืืืืจ ืืืจืืืืช ืืืคืืจืฉ - ืจืื ืืคืขืืืืช ืืืจืืฉืืช ืืืจ ืืฉืืืฆืืช ืืืขืืงื ืืกืคืจืืื ืืจืง ืืืชืื ืืช ืืืืช ืืคืขืื. ๐ ืืืืคื ืืืื, ืืืงืืื ืขืืืืช ืืฉืงืืคืืช ืืชืืืืช ืืืขื ืืื ืกืืื ืื ืชืื ืื ืืืืื ืื ืืืืื ืื (ืคืจืืืืกื, ืืืจืื ืืืืืืื ืื ื ืืืงื).
ืืืจืืฉื ืืชืืื ื-Python 2 ืืืฉืื ืืืขื ืืื ืืงืจืืืช (ื ืืืฉืช ืืืงืืื ืืืืง ื"ืกืืืจืืืช ืืกืืืจ" ืฉื ืืืจืกืืืช ืืขืืื ืืืช ืืืืชืจ ืฉื Python 3), ืืคืจื, ืืืืืช ืืฉืฉ ืืงืืืืืช ืืื ืืงืื (ืืื ืืคืชืืจ ืืช ืืขืืืช ืืฉืืืืฉ ืืืื-ืงืืืกืืช ).
ืืื ืืฉ ืืื ืืืืืืช:
- ืชืืืืช Python 3 ืคืืจืืฉื ืืจืกื 3.5 ืืืขืื (ืื ืืืืืช ืฉืืื ืืคืจืืืงื ืฉืื ืืื ืชืืฆืื ืฉื ืขืฆืืืช ืื ืืืกืจ ืฆืืจื ืืฉืืคืืจืื, ืืืืืื ืฉืงืฉื ืืืืฆืื ืกืืื ืืืืืืงืืืืืช ืืื ืืชื ืขืืืื ื-3.4);
- ื-Python 2.7, ืืกืคืจืืื ืืื ื ืชืืืืช ืืืกืืืจืืืืืืฆืื ืฉื ืืืืืื ืกื. ืชืืืืจ
ืืื . ืืื ืื ืืืฉืื ืจืืฆื ืืืืฉื ืืช ืื, ืืชื ืืืืื :);
ืืกืคืจืืื ืืฉ ืื ืื ืื ืื ืืจืื ืืืงืจื ืฉื ืฉืืืืืช ื ืืชืื. ืื ืื ื ืืชื ืืื ืืืืืช ืืช ืืืืจืืืช ืขื ืืื ืืฃ ืืื ืืื ืชืืื ืืืืื ืื, ืืขืจื ื ืฉืืจ ืืืจืืืช (ืืืงืื ืืืช, ืืืขืื ื ืืืืช ืืชืืืืืช ืืืืืจ ืขื ืืืืืืื ืืจืืื ืฉื ืืื ืืฉืชื ืื ืขืืืืื ื-Bash).
ืกืคืจืืืช python-shell
ืขืืฉืื ืื ื ืืกืคืจ ืืื ืขื ืืกืคืจืืื ืืฉื ืืื (ืื ื ืืฉืืื ืืช ืืชืืืืจ ืฉื ืืืกืจืื ืืช ืฉื ืืื ืืืืื ืืงืืืืื - ืื ืืืื ืืื ืฉืืชืืืจ ืขืืืจ ืื ืืืืื ืืืืื-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
ืืจืขืืื ืืื ืืื:
- ืืืืงื ืืืืื ืืืืืฆืืช ืืช Bash ืืขืืื Python;
- ืื ืคืงืืืช Bash ื ืงืจืืช ืืคืื ืงืฆืื ืฉื ืืืืืงื Shell;
- ืืืืจ ืืื, ืืคืจืืืจืื ืขืืืจ ืื ืงืจืืืช ืคืื ืงืฆืื ืืืขืืจืื ืืงืจืืืช ืืคืงืืื ืืืชืืืื ืฉื Bash;
- ืื ืคืงืืื ืืืืฆืขืช "ืืื ืืขืืฉืื" ืืจืืข ืฉืืื ื ืงืจืืช, ืืืืืจ. ืืืืฉื ืืกืื ืืจืื ืืช ืขืืืืช;
- ืืคืฉืจ ืืืฉืช ืืคืื ืฉื ืคืงืืื ื-stdout, ืืื ืื ืืงืื ืืืืืจ ืฉืื;
- ืื ืืคืงืืื ืืื ื ืืืขืจืืช, ื ืืจืง ืืจืื.
ืืื ื-smart-env, ืืฉ ืชืืืื ื-Python 2 (ืืืจืืช ืฉื ืืจืฉ ืงืฆืช ืืืชืจ ืื ืืืงืจืื) ืืืื ืชืืืื ื-Python 3.0-3.4.
ืชืืื ืืืช ืคืืชืื ืกืคืจืืื
ืืชื ืืืื ืืืฉืชืืฉ ืืกืคืจืืืช ืขืืฉืื: ืฉืชืืื ืืคืืจืกืืืช ื- PyPI ืืจืฉืื. ืืงืืจืืช ืืืื ืื ื- Github (ืจืื ืืืื).
ืฉืชื ืืกืคืจืืืช ืืคืืชืื ืชืื ืืชืืฉืืืช ืืืฉืื ืฉื ืืกืฃ ืืืืชืขื ืืื ืื. ืืื ืื ืขืฉืื ืืืืืช ืงืฉื ืืืืฆืื ืืืืื ืชืืื ืืช ืืืฉืืช ื-smart-env, ืื ื-python-shell ืืฉ ืืืืื ืืฉืื ื ืืกืฃ ืืืืกืืฃ:
- ืชืืืื ืืฉืืืืช ืฉืืื ื ืืืกืืืช;
- ืืคืฉืจืืช ืืชืงืฉืืจืช ืืื ืืจืืงืืืืืช ืขื ืืฆืืืช (ืขืืืื ืขื stdin);
- ืืืกืคืช ืืืคืืื ืื ืืืฉืื (ืืืืืื, ื ืืก ืืงืืืช ืคืื ื-stderr);
- ืืืฉืื ืฉื ืกืคืจืืื ืฉื ืคืงืืืืช ืืืื ืืช (ืืฉืืืืฉ ืขื ืืคืื ืงืฆืื dir());
- ืืื '
ืชืืืืจ
- ืกืคืจืืืช smart-env:
GitHub ะธPyPI - ืกืคืจืืืช python-shell:
GitHub ะธPyPI ืขืจืืฅ ืืืืจื ืขืืืื ื ืกืคืจืืื
UPD23.02.2020:
* ืืืืืจืื ืืืขืืจื, ืืงืืฉืืจืื ืืืชืืืืื ืขืืืื ื
* ืืจืกืช python-shell==1.0.1 ืืชืืื ื ืช ืืฉืืจืืจ ื-29.02.2020/XNUMX/XNUMX. ืืฉืื ืืืื ืืืืืื ืชืืืื ืืืฉืืื ืืืืืืืืช ืฉื ืคืงืืืืช ืืืคืงืืื dir(Shell), ืคืงืืืืช ืืจืฆืช ืขื ืืืื Python ืื ืืืงื ืืชืืงืื ื ืืืืื.
ืืงืืจ: www.habr.com