рдкрд╛рдпрдерди рдЖрдгрд┐ рдмреЕрд╢ рдлреНрд░реЗрдВрдбрд╢рд┐рдк рдмрдирд╡рдгреЗ: рд╕реНрдорд╛рд░реНрдЯ-рдПрдирд╡реНрд╣реА рдЖрдгрд┐ рдкрд╛рдпрдерди-рд╢реЗрд▓ рд▓рд╛рдпрдмреНрд░рд░реА

рд╕рд░реНрд╡рд╛рдВрдирд╛ рд╢реБрдн рджрд┐рд╡рд╕.

рдЖрдЬ, рдкрд╛рдпрдерди рд╣реА рдХреЗрд╡рд│ рд╕реЙрдлреНрдЯрд╡реЗрдЕрд░ рдЙрддреНрдкрд╛рджрдиреЗ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рддрдЪ рдирд╡реНрд╣реЗ рддрд░ рддреНрдпрд╛рдВрдЪреА рдкрд╛рдпрд╛рднреВрдд рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рдд рд╕рд░реНрд╡рд╛рдзрд┐рдХ рд╡рд╛рдкрд░рд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рднрд╛рд╖рд╛рдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ. рдкрд░рд┐рдгрд╛рдореА, рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдЗрдЪреНрдЫреЗрдиреЗ рдХрд┐рдВрд╡рд╛ рд╡рд┐рд░реБрджреНрдз рдЕрдиреЗрдХ рдбреЗрд╡реНрд╣реЙрдкреНрд╕рдирд╛, рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рдЬреБрдиреНрдпрд╛ рдмреЕрд╢ рд▓рд┐рдкреАрдВрдирд╛ рдкреВрд░рдХ рдореНрд╣рдгреВрди рдирдВрддрд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдирд╡реАрди рднрд╛рд╖рд╛ рд╢рд┐рдХрд╛рд╡реА рд▓рд╛рдЧрд▓реА. рддрдерд╛рдкрд┐, рдмреЕрд╢ рдЖрдгрд┐ рдкрд╛рдпрдерди рдХреЛрдб рд▓рд┐рд╣рд┐рдгреНтАНрдпрд╛рдЪреНтАНрдпрд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкрдзреНтАНрджрддреАрдВрдЪрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛рдд рдЖрдгрд┐ рдХрд╛рд╣реА рд╡реИрд╢рд┐рд╖реНтАНрдЯреНрдпреЗ рдЖрд╣реЗрдд, рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНтАНрдЯреНрд╕рд▓рд╛ "рд╕рд╛рдк рднрд╛рд╖реЗрдд" рдкреЛрд░реНрдЯ рдХрд░рдгреНтАНрдпрд╛рдЪреЗ рдХрд╛рдо рдХрд╛рд╣реАрд╡реЗрд│рд╛ рдХреНрд╖реБрд▓реНрд▓рдХ рдЖрдгрд┐ рдХреНрд╖реБрд▓реНрд▓рдХ рдХрд╛рдо рдЖрд╣реЗ.

рдбреЗрд╡реНрд╣реЙрдкреНрд╕рд╕рд╛рдареА рдЬреАрд╡рди рд╕реБрд▓рдн рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдкрд╛рдпрдердирдордзреНрдпреЗ рдЕрдиреЗрдХ рдЙрдкрдпреБрдХреНрдд рд▓рд╛рдпрдмреНрд░рд░реА рдЖрдгрд┐ рдЙрдкрдпреБрдХреНрддрддрд╛ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреНрдпрд╛ рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рдд рдЖрд╣реЗрдд. рд╣рд╛ рд▓реЗрдЦ рдпрд╛ рдкреЛрд╕реНрдЯрдЪреНрдпрд╛ рд▓реЗрдЦрдХрд╛рдиреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рджреЛрди рдирд╡реАрди рдЧреНрд░рдВрдерд╛рд▓рдпрд╛рдВрдЪреЗ рд╡рд░реНрдгрди рдХрд░рддреЛ - smart-env ╨╕ рдЕрдЬрдЧрд░-рд╢реЗрд▓ - рдЖрдгрд┐ рдЕрдзрд┐рдХ рдордиреЛрд░рдВрдЬрдХ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рдЬрд╛рдЧрд╛ рд╕реЛрдбреВрди, тАЛтАЛрдкрд╛рдпрдердирд╕рд╣ рдХрд╛рдо рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдХрдбреЗ рднрд░рдкреВрд░ рд▓рдХреНрд╖ рджреЗрдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдбреЗрд╡реНрд╣рдкрд▓рд╛ рдореБрдХреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдбрд┐рдЭрд╛рдЗрди рдХреЗрд▓реЗрд▓реЗ. рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рдХреНрд░рд┐рдпрд╛рдХрд▓рд╛рдкрд╛рдВрдЪреА рд╡реНрдпрд╛рдкреНрддреА рдореНрд╣рдгрдЬреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░рд┐рд╡рд░реНрддрдиреЗ рдЖрдгрд┐ рдмрд╛рд╣реНрдп рдЙрдкрдпреБрдХреНрддрддрд╛ рд▓рд╛рдБрдЪ рдХрд░рдгреЗ.

рдХреЛрдгрд╛рд▓рд╛рд╣реА рд╕реНрд╡рд╛рд░рд╕реНрдп рдЖрд╣реЗ, рдХреГрдкрдпрд╛ рдорд╛рдВрдЬрд░ рдкрд╣рд╛.

рдирд╡реАрди "рд╕рд╛рдпрдХрд▓"?

рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА, рд╕рд╛рдорд╛рдиреНрдп рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА рдирд╡реАрди рдкреЕрдХреЗрдЬреЗрд╕ рдХрд╛ рддрдпрд╛рд░ рдХрд░рд╛рд╡реНрдпрд╛рдд? рддреБрдореНрд╣рд╛рд▓рд╛ os.environ рдЖрдгрд┐ subprocess. рдереЗрдЯ рд╡рд╛рдкрд░рдгреНрдпрд╛рдкрд╛рд╕реВрди рдХрд╛рдп рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддреЗ?

рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рдВрдерд╛рд▓рдпрд╛рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдореА рд╕реНрд╡рддрдВрддреНрд░рдкрдгреЗ рдкреБрд░рд╛рд╡реЗ рджреЗрдИрди.

рд╕реНрдорд╛рд░реНрдЯ-рдПрдирд╡реНрд╣реА рд▓рд╛рдпрдмреНрд░рд░реА

рдЖрдкрд▓реЗ рд╕реНрд╡рддрдГрдЪреЗ рд╡рд┐рдЪрд╛рд░ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдкреВрд░реНрд╡реА, рдСрдирд▓рд╛рдЗрди рдЬрд╛рдгреЗ рдЖрдгрд┐ рддрдпрд╛рд░ рдЙрдкрд╛рдп рд╢реЛрдзрдгреЗ рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. рдЕрд░реНрдерд╛рдд, рддреБрдореНрд╣рд╛рд▓рд╛ рдЬреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рддреЗ рди рдорд┐рд│рдгреНрдпрд╛рдЪрд╛ рдзреЛрдХрд╛ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╣рд╛ рдПрдХ "рд╡рд┐рдорд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо" рдЖрд╣реЗ. рдирд┐рдпрдорд╛рдиреБрд╕рд╛рд░, рд╣рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрди рдХрд╛рд░реНрдп рдХрд░рддреЛ рдЖрдгрд┐ рдмрд░рд╛рдЪ рд╡реЗрд│ рдЖрдгрд┐ рдореЗрд╣рдирдд рд╡рд╛рдЪрд╡рддреЛ.

рдирд┐рдХрд╛рд▓рд╛рдиреБрд╕рд╛рд░ рд╢реЛрдз рдЦрд╛рд▓реАрд▓ рдЙрдШрдб рдЭрд╛рд▓реЗ:

  • рдЕрд╢реА рдкреЕрдХреЗрдЬреЗрд╕ рдЖрд╣реЗрдд рдЬреА рдкреНрд░рддреНрдпрдХреНрд╖рд╛рдд os.environ рд▓рд╛ рдХреЙрд▓ рдЧреБрдВрдбрд╛рд│рддрд╛рдд, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪ рд╡реЗрд│реА рд╡рд┐рдЪрд▓рд┐рдд рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдХреНрд░рд┐рдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ (рдХреНрд▓рд╛рд╕рдЪреЗ рдЙрджрд╛рд╣рд░рдг рддрдпрд╛рд░ рдХрд░рдгреЗ, рдХреЙрд▓рдордзреАрд▓ рд╡рд┐рд╢реЗрд╖ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЗ.);
  • рдЪрд╛рдВрдЧрд▓реА рдкреЕрдХреЗрдЬреЗрд╕ рдЖрд╣реЗрдд, рдЬреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рд╕рдВрд╕реНрдереЗрд╢реА (рдкреНрд░рд╛рдореБрдЦреНрдпрд╛рдиреЗ рдЬреЕрдВрдЧреЛ рд╕рд╛рд░рдЦреА рд╡реЗрдм рдлреНрд░реЗрдорд╡рд░реНрдХ) рдХрд╛рдЯреЗрдХреЛрд░рдкрдгреЗ рдмрд╛рдВрдзрд▓реЗрд▓реА рдЖрд╣реЗрдд рдЖрдгрд┐ рддреНрдпрд╛рдореБрд│реЗ рдлрд╛рдИрд▓рд╢рд┐рд╡рд╛рдп рдЕрдЬрд┐рдмрд╛рдд рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рдирд╛рд╣реАрдд;
  • рдХрд╛рд╣реАрддрд░реА рдирд╡реАрди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рджреБрд░реНрдорд┐рд│ рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЯрд╛рдпрдкрд┐рдВрдЧ рдЬреЛрдбрд╛ рдЖрдгрд┐ рд╕рд╛рд░рдЦреНрдпрд╛ рдкрджреНрдзрддреА рдХреЙрд▓ рдХрд░реВрди рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╡реНрд╣реЕрд▓реНрдпреВрдЬ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдкрд╛рд░реНрд╕ рдХрд░рд╛
    get_<typename>(var_name)

    рдХрд┐рдВрд╡рд╛ рдпреЗрдереЗ рдЖрдгрдЦреА рдПрдХ рдЙрдкрд╛рдп, рдЬреЗ, рддрдерд╛рдкрд┐, рдЖрддрд╛ рдмрджрдирд╛рдо рдЭрд╛рд▓реЗрд▓реНрдпрд╛ Python 2 рдЪреЗ рд╕рдорд░реНрдерди рдХрд░рдд рдирд╛рд╣реА (рдЬреЗ рдЕрд╕реВрдирд╣реА рдЕрдзрд┐рдХреГрдд R.I.P., рдЕрдЬреВрдирд╣реА рд▓рд┐рдЦрд┐рдд рдХреЛрдбрдЪреЗ рдкрд░реНрд╡рдд рдЖрдгрд┐ рд╕рдВрдкреВрд░реНрдг рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдЖрд╣реЗрдд);

  • рд╢рд╛рд▓реЗрдп-рд╡рд┐рджреНрдпрд╛рд░реНрдереА рд╣рд╕реНрддрдХрд▓рд╛ рдЖрд╣реЗрдд рдЬреЗ рдХрд╛рд╣реА рдЕрдЬреНрдЮрд╛рдд рдХрд╛рд░рдгрд╛рд╕реНрддрд╡, рдЕрдкрд╕реНрдЯреНрд░реАрдо PyPI рдордзреНрдпреЗ рд╕рдВрдкрд▓реЗ рдЖрдгрд┐ рдлрдХреНрдд рдирд╡реАрди рдкреЕрдХреЗрдЬреЗрд╕рдЪреНрдпрд╛ рдирд╛рд╡рд╛рдд рд╕рдорд╕реНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛рдд (рд╡рд┐рд╢реЗрд╖рддрдГ, "рд╕реНрдорд╛рд░реНрдЯ-рдПрдирд╡реНрд╣реА" рд╣реЗ рдирд╛рд╡ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрд╛рдп рдЖрд╣реЗ).

рдЖрдгрд┐ рд╣реА рдпрд╛рджреА рдмрд░рд╛рдЪ рдХрд╛рд│ рдЪрд╛рд▓реВ рд░рд╛рд╣реВ рд╢рдХрддреЗ. рддрдерд╛рдкрд┐, рдХрд╛рд╣реАрддрд░реА рд╕реЛрдпреАрд╕реНрдХрд░ рдЖрдгрд┐ рд╕рд╛рд░реНрд╡рддреНрд░рд┐рдХ рдмрдирд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд▓реНрдкрдиреЗрдмрджреНрджрд▓ рдорд▓рд╛ рдЙрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд░реАрд▓ рдореБрджреНрджреЗ рдкреБрд░реЗрд╕реЗ рд╣реЛрддреЗ.

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 рдХреНрд▓рд╛рд╕рдЪрд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдореНрд╣рдгреВрди рд╕рдВрджрд░реНрдн рджреЗрдКрди рдкреНрд░рд╡реЗрд╢ рдорд┐рд│рд╡рд▓рд╛ рдЬрд╛рддреЛ, рдЬреЗ рдЦрд░рдВ рддрд░, рдпрд╛ рд╡рд░реНрдЧрд╛рд▓рд╛ рдиреЗрдЯрд┐рд╡реНрд╣ рд╕рд┐рд╕реНрдЯрдо рд╡рд╛рддрд╛рд╡рд░рдгрд╛рд╕рд╛рдареА рдЕрдВрддрд░реНрдЬреНрдЮрд╛рдиреА рдЖрд╡рд░рдг рдмрдирд╡рддреЗ, рддреНрдпрд╛рдЪ рд╡реЗрд│реА рдЬрд╡рд│рдЬрд╡рд│ рдХреЛрдгрддреНрдпрд╛рд╣реА рд╕рд┐рд╕реНрдЯрдорд╕рд╛рдареА рд╕рдВрднрд╛рд╡реНрдп рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯрдордзреНрдпреЗ рдмрджрд▓рддреЗ ( рддрддреНрд╕рдо рджреГрд╖реНрдЯреАрдХреЛрди, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЬреЕрдВрдЧреЛ рдордзреНрдпреЗ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдлрдХреНрдд рддреЗрдереЗ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореНрд╣рдгрдЬреЗ рд╕реЗрдЯрд┐рдВрдЧреНрдЬ рдореЙрдбреНрдпреВрд▓/рдкреЕрдХреЗрдЬ рд╕реНрд╡рддрдГ).

рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдЯрд╛рдпрдкрд┐рдВрдЧ рд╕рдорд░реНрдерди рдореЛрдб рд╕рдХреНрд╖рдо/рдЕрдХреНрд╖рдо рдХрд░рдгреЗ рджреЛрди рдкрджреНрдзрддреА рд╡рд╛рдкрд░реВрди рд╕рд╛рдзреНрдп рдХреЗрд▓реЗ рдЬрд╛рддреЗ - enable_automatic_type_cast() рдЖрдгрд┐ disable_automatic_type_cast(). рдЬрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓рдордзреНрдпреЗ рдЕрдиреБрдХреНрд░рдорд┐рдд JSON рд╕рд╛рд░рдЦреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд┐рдВрд╡рд╛ рдлрдХреНрдд рдПрдХ рдмреБрд▓рд┐рдпрди рдХреЙрдиреНрд╕реНрдЯрдВрдЯ рдЕрд╕реЗрд▓ (рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдбреАрдмрдЧ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдбреАрдЬрдБрдЧреЛрдордзреНрдпреЗ "рд╡реИрдз" рд╕реНрдЯреНрд░рд┐рдВрдЧрд╕рд╣ рддреБрд▓рдирд╛ рдХрд░реВрди рд╕реЗрдЯ рдХрд░рдгреЗ рд╣реЗ рд╕рд░реНрд╡рд╛рдд рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд░рдгрд╛рдВрдкреИрдХреА рдПрдХ рдЖрд╣реЗ) рдЕрд╕рд▓реНрдпрд╛рд╕ рд╣реЗ рд╕реЛрдпреАрдЪреЗ рдЕрд╕реВ рд╢рдХрддреЗ. рдкрд░рдВрддреБ рдЖрддрд╛ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╛рд╣реА - рдмрд╣реБрддреЗрдХ рдЖрд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛ рдЖрдзреАрдЪ рд▓рд╛рдпрдмреНрд░рд░реАрдЪреНрдпрд╛ рдЦреЛрд▓реАрдд рдПрдореНрдмреЗрдб рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд рдЖрдгрд┐ рдлрдХреНрдд рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕рд┐рдЧреНрдирд▓рдЪреА рд╡рд╛рдЯ рдкрд╛рд╣рдд рдЖрд╣реЗрдд. ЁЯЩВ рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЯрд╛рдпрдкрд┐рдВрдЧ рдкрд╛рд░рджрд░реНрд╢рдХрдкрдгреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ рдЖрдгрд┐ рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдЙрдкрд▓рдмреНрдз рдЕрдВрдЧрднреВрдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░рд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрддреЗ (рдлреНрд░реЛрдЭрдирд╕реЗрдЯ, рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдЖрдгрд┐ рдмрд╛рдЗрдЯреНрд╕ рддрдкрд╛рд╕рд▓реЗ рдЧреЗрд▓реЗ рдирд╛рд╣реАрдд).

рдкрд╛рдпрдерди 2 рд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдХреНрд╖рд░рд╢рдГ рдХреЛрдгрддрд╛рд╣реА рддреНрдпрд╛рдЧ рди рдХрд░рддрд╛ (рдЯрд╛рдпрдкрд┐рдВрдЧ рд╕реЛрдбреВрди рджреЗрдгреЗ рдЖрдгрд┐ рдкрд╛рдпрдерди 3 рдЪреНрдпрд╛ рдирд╡реАрдирддрдо рдЖрд╡реГрддреНрддреНрдпрд╛рдВрдЪреЗ рдХрд╛рд╣реА "рд╢реБрдЧрд░ рдХреЕрдВрдбреА") рд▓рд╛рдЧреВ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рд╡рд┐рд╢реЗрд╖рддрдГ, рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рд╕рд╣рд╛ (рдореЗрдЯрд╛рдХреНрд▓рд╛рд╕реЗрд╕ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА) рдзрдиреНрдпрд╡рд╛рдж. ).

рдкрд░рдВрддреБ рдХрд╛рд╣реА рдирд┐рд░реНрдмрдВрдз рдЖрд╣реЗрдд:

  • Python 3 рд╕рдорд░реНрдерди рдореНрд╣рдгрдЬреЗ рдЖрд╡реГрддреНрддреА 3.5 рдЖрдгрд┐ рдЙрдЪреНрдЪ (рдЖрдкрд▓реНрдпрд╛ рдкреНрд░рдХрд▓реНрдкрд╛рдд рддреНрдпрд╛рдВрдЪреА рдЙрдкрд╕реНрдерд┐рддреА рдПрдХрддрд░ рдЖрд│рд╢реАрдкрдгрд╛ рдХрд┐рдВрд╡рд╛ рд╕реБрдзрд╛рд░рдгрд╛рдВрдЪреНрдпрд╛ рдЕрднрд╛рд╡рд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдЖрд╣реЗ, рдХрд╛рд░рдг рдЖрдкрдг рдЕрджреНрдпрд╛рдк 3.4 рд╡рд░ рдЖрд╣рд╛рдд рдпрд╛рдЪреЗ рд╡рд╕реНрддреБрдирд┐рд╖реНрда рдХрд╛рд░рдг рд╕рдореЛрд░ рдпреЗрдгреЗ рдХрдареАрдг рдЖрд╣реЗ);
  • Python 2.7 рдордзреНрдпреЗ, рд▓рд╛рдпрдмреНрд░рд░реА рд╕реЗрдЯ рд▓рд┐рдЯрд░рд▓рдЪреНрдпрд╛ рдбреАрд╕реАрд░рд┐рдпрд▓рд╛рдпрдЭреЗрд╢рдирд▓рд╛ рд╕рдорд░реНрдерди рджреЗрдд рдирд╛рд╣реА. рд╡рд░реНрдгрди рдпреЗрдереЗ. рдкрдг рдХреЛрдгрд╛рд▓рд╛ рддреА рдЕрдорд▓рд╛рдд рдЖрдгрд╛рдпрдЪреА рдЕрд╕реЗрд▓ рддрд░ рдЖрдкрд▓реЗ рд╕реНрд╡рд╛рдЧрдд рдЖрд╣реЗ :);

рдкрд╛рд░реНрд╕рд┐рдВрдЧ рддреНрд░реБрдЯреАрдВрдЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рд▓рд╛рдпрдмреНрд░рд░реАрдордзреНрдпреЗ рдЕрдкрд╡рд╛рджрд╛рддреНрдордХ рдпрдВрддреНрд░рдгрд╛ рджреЗрдЦреАрд▓ рдЖрд╣реЗ. рдХреЛрдгрддреНрдпрд╛рд╣реА рдЙрдкрд▓рдмреНрдз рд╡рд┐рд╢реНрд▓реЗрд╖рдХрд╛рджреНрд╡рд╛рд░реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдУрд│рдЦрддрд╛ рдпреЗрдд рдирд╕реЗрд▓, рддрд░ рдореВрд▓реНрдп рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░рд╛рд╣рддреЗ (рддреНрдпрд╛рдРрд╡рдЬреА, рдмреЕрд╢рдордзреНрдпреЗ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛рдд рдпрд╛рдЪреНрдпрд╛ рдиреЗрд╣рдореАрдЪреНрдпрд╛ рддрд░реНрдХрд╛рд╢реА рд╕реЛрдпреАрд╕рд╛рдареА рдЖрдгрд┐ рдмреЕрдХрд╡рд░реНрдб рд╕реБрд╕рдВрдЧрддрддреЗрд╕рд╛рдареА).

рдкрд╛рдпрдерди-рд╢реЗрд▓ рд▓рд╛рдпрдмреНрд░рд░реА

рдЖрддрд╛ рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рджреБрд╕рд▒реНрдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрдмрджреНрджрд▓ рд╕рд╛рдВрдЧреЗрди (рдореА рд╡рд┐рджреНрдпрдорд╛рди рдЕреЕрдирд╛рд▓реЙрдЧреНрд╕рдЪреНрдпрд╛ рдХрдорддрд░рддреЗрдЪреЗ рд╡рд░реНрдгрди рд╡рдЧрд│реЗрди - рддреЗ рд╕реНрдорд╛рд░реНрдЯ-рдПрдирд╡реНрд╣реАрд╕рд╛рдареА рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдкреНрд░рдорд╛рдгреЗрдЪ рдЖрд╣реЗ. рдЕреЕрдирд╛рд▓реЙрдЧреНрд╕ - рдпреЗрдереЗ ╨╕ рдпреЗрдереЗ).

рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдЪреА рдХрд▓реНрдкрдирд╛ рдЖрдгрд┐ рддреНрдпрд╛рд╕рд╛рдареАрдЪреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реНрдорд╛рд░реНрдЯ-рдПрдирд╡реНрд╣реАрд╕рд╛рдареА рд╡рд░реНрдгрди рдХреЗрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗрдЪ рдЖрд╣реЗрдд, рдЬрд╕реЗ рдХреА рдЙрджрд╛рд╣рд░рдгрд╛рд╡рд░реВрди рдкрд╛рд╣рд┐рд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ:

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. рдкрд╛рдпрдердирдЪреНрдпрд╛ рдЬрдЧрд╛рдд рдмреЕрд╢рдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдгрд╛рд░рд╛ рдПрдХрдЪ рд╡рд░реНрдЧ;
  2. рдкреНрд░рддреНрдпреЗрдХ рдмреЕрд╢ рдХрдорд╛рдВрдбрд▓рд╛ рд╢реЗрд▓ рдХреНрд▓рд╛рд╕рдЪреЗ рдлрдВрдХреНрд╢рди рдореНрд╣рдЯрд▓реЗ рдЬрд╛рддреЗ;
  3. рдкреНрд░рддреНрдпреЗрдХ рдлрдВрдХреНрд╢рди рдХреЙрд▓рдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдирдВрддрд░ рд╕рдВрдмрдВрдзрд┐рдд рдмреЕрд╢ рдХрдорд╛рдВрдб рдХреЙрд▓рдордзреНрдпреЗ рдкрд╛рд╕ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд;
  4. рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб "рдпреЗрдереЗ рдЖрдгрд┐ рдЖрддреНрддрд╛" рдпрд╛ рдХреНрд╖рдгреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ, рдЙрджрд╛. рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рджреГрд╖реНрдЯреАрдХреЛрди рдХрд╛рд░реНрдп рдХрд░рддреЗ;
  5. stdout рдордзреАрд▓ рдХрдорд╛рдВрдбрдЪреЗ рдЖрдЙрдЯрдкреБрдЯ рддрд╕реЗрдЪ рддреНрдпрд╛рдЪрд╛ рд░рд┐рдЯрд░реНрди рдХреЛрдб рдНрдХреНрд╕реЗрд╕ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ;
  6. рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдордордзреНрдпреЗ рдирд╕рд▓реНрдпрд╛рд╕, рдЕрдкрд╡рд╛рдж рдЯрд╛рдХрд▓рд╛ рдЬрд╛рддреЛ.

smart-env рдкреНрд░рдорд╛рдгреЗ, Python 2 рд╕рд╛рдареА рд╕рдорд░реНрдерди рдЖрд╣реЗ (рдЬрд░реА рдереЛрдбреЗ рдЕрдзрд┐рдХ рдмрд│реА рд░рдХреНрдд рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ) рдЖрдгрд┐ Python 3.0-3.4 рд╕рд╛рдареА рдХреЛрдгрддреЗрд╣реА рд╕рдорд░реНрдерди рдирд╛рд╣реА.

рдЧреНрд░рдВрдерд╛рд▓рдп рд╡рд┐рдХрд╛рд╕ рдпреЛрдЬрдирд╛

рддреБрдореНрд╣реА рдЖрддрд╛ рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛: рджреЛрдиреНрд╣реА рдЕрдзрд┐рдХреГрдд PyPI рд╡рд░ рдкреЛрд╕реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗрдд. рд╕реНрд░реЛрдд Github рд╡рд░ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд (рдЦрд╛рд▓реА рдкрд╣рд╛).

рдЗрдЪреНрдЫреБрдХрд╛рдВрдХрдбреВрди рд╕рдВрдХрд▓рд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдЕрднрд┐рдкреНрд░рд╛рдп рд▓рдХреНрд╖рд╛рдд рдШреЗрдКрди рджреЛрдиреНрд╣реА рдЧреНрд░рдВрдерд╛рд▓рдпреЗ рд╡рд┐рдХрд╕рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреАрд▓. рдЖрдгрд┐, рдЬрд░ smart-env рдордзреНрдпреЗ рд╡рд┐рд╡рд┐рдз рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдирд╡реАрди рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрд╛рдВрд╕рд╣ рдпреЗрдгреЗ рдХрдареАрдг рдЕрд╕реЗрд▓, рддрд░ python-shell рдордзреНрдпреЗ рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдХрд╛рд╣реАрддрд░реА рдЖрд╣реЗ:

  • рдиреЙрди-рдмреНрд▓реЙрдХрд┐рдВрдЧ рдХреЙрд▓рд╕рд╛рдареА рд╕рдорд░реНрдерди;
  • рдХрд╛рд░реНрдпрд╕рдВрдШрд╛рд╕рд╣ рдкрд░рд╕реНрдкрд░ рд╕рдВрд╡рд╛рджрд╛рдЪреА рд╢рдХреНрдпрддрд╛ (stdin рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреЗ);
  • рдирд╡реАрди рдЧреБрдгрдзрд░реНрдо рдЬреЛрдбрдгреЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, stderr рдХрдбреВрди рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдорд╛рд▓рдорддреНрддрд╛);
  • рдЙрдкрд▓рдмреНрдз рдЖрджреЗрд╢рд╛рдВрдЪреНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХреЗрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА (dir() рдлрдВрдХреНрд╢рдирд╕рд╣ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА);
  • рдЖрдгрд┐ рдпрд╛рдкреНрд░рдорд╛рдгреЗ.

рд╕рдВрджрд░реНрдн

  1. рд╕реНрдорд╛рд░реНрдЯ-рдПрдирд╡реНрд╣реА рд▓рд╛рдпрдмреНрд░рд░реА: рдЬрд┐рдереВрдм ╨╕ рдкреАрдкреАрдЖрдпрдЖрдп
  2. рдкрд╛рдпрдерди-рд╢реЗрд▓ рд▓рд╛рдпрдмреНрд░рд░реА: рдЬрд┐рдереВрдм ╨╕ рдкреАрдкреАрдЖрдпрдЖрдп
  3. рдЯреЗрд▓рд┐рдЧреНрд░рд╛рдо рдЪреЕрдиреЗрд▓ рд▓рд╛рдпрдмреНрд░рд░реА рдЕрджреНрдпрддрдиреЗ

UPD 23.02.2020/XNUMX/XNUMX:
* рд░рд┐рдкреЙрдЭрд┐рдЯрд░реАрдЬ рд╣рд▓рд╡рдгреНрдпрд╛рдд рдЖрд▓реНрдпрд╛ рдЖрд╣реЗрдд, рд╕рдВрдмрдВрдзрд┐рдд рд▓рд┐рдВрдХреНрд╕ рдЕрдкрдбреЗрдЯ рдХреЗрд▓реНрдпрд╛ рдЧреЗрд▓реНрдпрд╛ рдЖрд╣реЗрдд
* python-shell==1.0.1 рдЖрд╡реГрддреНрддреА 29.02.2020/XNUMX/XNUMX рд░реЛрдЬреА рд░рд┐рд▓реАрдЬрд╕рд╛рдареА рддрдпрд╛рд░ рдХреЗрд▓реА рдЬрд╛рдд рдЖрд╣реЗ. рдмрджрд▓рд╛рдВрдордзреНрдпреЗ рд╕реНрд╡рдпрдВрдкреВрд░реНрдг рдЖрджреЗрд╢ рдЖрдгрд┐ dir(Shell) рдХрдорд╛рдВрдбрд╕рд╛рдареА рд╕рдорд░реНрдерди, рдЕрд╡реИрдз рдкрд╛рдпрдерди рдЖрдпрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░рд╕рд╣ рдЖрджреЗрд╢ рдЪрд╛рд▓рд╡рдгреЗ рдЖрдгрд┐ рдмрдЧ рдирд┐рд░рд╛рдХрд░рдгреЗ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдЖрд╣реЗрдд.

рд╕реНрддреНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛