Virtualenv: рдЬрдм рд╕реЗрдЯ-рдпреВ рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЕрдирдмрд╛рдЙрдВрдб рдЪрд░ рдХреЗ рдХрд╛рд░рдг рд╕рдХреНрд░рд┐рдп рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдорд╛рд░реНрдЪ 2017  ┬╖  26рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pypa/virtualenv

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреБрд░рд╛рдирд╛ рдмрдЧ рдЕрднреА рднреА рдпрд╣рд╛рдВ рд╣реИ: PS1: unbound variable рдЬрдм рдмреИрд╢ рд╕рдЦреНрдд рдореЛрдб рдХреЗ рд╕рд╛рде рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ virtualenv рдХреЛ рдмреИрд╢ рд╕рдЦреНрдд рдореЛрдб рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд▓рдЧрднрдЧ рдЦрд╛рд▓реА рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕ рдкрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рддрд┐рдЧрдорди рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдмрдЧ рдХрд┐рд╕реА рднреА рд╕рдорд░реНрдерд┐рдд рдпреВрдирд┐рдХреНрд╕ рд╢реЗрд▓ рдХреЗ рд╕рд╛рде рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рди рдХреЗрд╡рд▓ bash , рдЬрд┐рд╕рдореЗрдВ ksh рдФрд░ zsh ред

рдмрдЧ рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

#!/bin/bash
# same applies to any other bourne compatible shells (is not bash specific)
set -euox pipefail
pip install -U virtualenv
virtualenv xxx
unset PS1
source xxx/bin/activate

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб, рдмрджрд╕реВрд░рдд рд╣реЛрдиреЗ рдкрд░, рд╕рдХреНрд░рд┐рдп рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП PS=${PS:-} рдХреЛ рдкреНрд░реАрдкреЗрдиреНрдб рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдкреАрдПрд╕ рдХреЛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрдиреЗ рдкрд░ рдЗрд╕рдХрд╛ рдорд╛рди рд░рдЦрддрд╛ рд╣реИред

рдЙрд╕реА рддрд░рд╣ рдХреА рдмрдЧ рд╡реЗрдирд╡ рдХреЗ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ

рдХреГрдкрдпрд╛ рдХрд┐рд╕реА рд╕реБрдзрд╛рд░ рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рд╕реНрдердЧрд┐рдд/рд╡рд┐рд▓рдВрдмрд┐рдд рди рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдмрдЧ рдЕрдиреНрдп рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдореМрдЬреВрдж рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рд╕реНрддрд╛рд░ рдЪрд░ рд╕рд┐рдВрдЯреИрдХреНрд╕ POSIX рд╕рдВрдЧрдд рд╣реИ рдФрд░ рдХреБрдЫ рдирдпрд╛ рдпрд╛ рдлреИрдВрд╕реА рдирд╣реАрдВ рд╣реИ, рдпрд╣ рддрдереНрдп рдХрд┐ рдпрд╣ рдореВрд▓ рд▓реЗрдЦрдХ рдХреЛ рдирд╣реАрдВ рдкрддрд╛ рдерд╛, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░рдиреЗ рдХрд╛ рдмрд╣рд╛рдирд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдореНрдмреНрдбрд╛-рдЖрдзрд╛рд░рд┐рдд рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рднреА рдЗрд╕рд╕реЗ рдХрд╛рдЯ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/awslabs/serverless-image-handler/blob/master/deployment/build-s3 -dist.sh

рдореИрдВрдиреЗ VIRTUAL_ENV_DISABLE_PROMPT=true source env/bin/activate рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред

рд╕рднреА 26 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореБрдЭреЗ рдпрд╣ рднреА рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ 15.1.0 рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реИред рдореИрдВ рдиреЗрдХреНрд╕реНрдЯрдлреНрд▓реЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рднреАрддрд░ рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдиреЗрдХреНрд╕реНрдЯрдлреНрд▓реЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдЦреНрдд рдореЛрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ (https://github.com/nextflow-io/nextflow/issues/302)ред рдЬрдмрдХрд┐ рдиреЗрдХреНрд╕реНрдЯрдлреНрд▓реЛ рдХреЛ рд╕рдЦреНрдд рдореЛрдб рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрди: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдиреЗрдХреНрд╕реНрдЯрдлреНрд▓реЛ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдЕрдирдмрд╛рдЙрдВрдб рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ activate рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╕реЗ рдЖрддрд╛ рд╣реИ activate.sh , рддреЛ рдареАрдХ рдмрджрд▓рддреЗ рд░реВрдк рдореЗрдВ рд╕рд░рд▓ рд░реВрдк рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ $PS1 рд▓рд╛рдЗрдиреЛрдВ 57, 59 рдФрд░ 61 рдХреЗ рд▓рд┐рдП рдкрд░ ${PS1-} ред (рдпрд╣ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдкрд░ PS1 рдХреЗ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдФрд░ рдЕрдиреНрдпрдерд╛ рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрд╣ PS1 рдХреЗ рдорд╛рди рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг )ред рдХрдо рд╕реЗ рдХрдо, рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЙрддреНрдкрдиреНрди activate рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдмреИрд╢ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕реАрдЦрдиреЗ рдореЗрдВ рдХрд┐рддрдиреЗ рд╕рд╛рд▓ рд▓рдЧреЗрдВрдЧреЗ .... рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдореЗрдВ рдЕрдирдмрд╛рдЙрдВрдб рд╡реИрд░рд┐рдПрдмрд▓ рдмрдЧреНрд╕ рдкреБрд░рд╛рдиреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдХрд░ рдЙрдиреНрд╣реЗрдВ рдЯрд╛рд▓рдирд╛ рднреА рдЖрд╕рд╛рди рд╣реИред рдЖрднрд╛рд╕реА рдкрд░реАрдХреНрд╖рдг: set -euox pipefail ред

рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдбрд┐рд╕реНрдЯреНрд░реЛрд╕ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рдХрд┐рддрдиреЗ рд╕рд╛рд▓ рд▓рдЧреЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдбреЗрдмрд┐рдпрди, рдЙрдмрдВрдЯреВ, рд╕реЗрдВрдЯреЛрд╕, рдЖрд░рдПрдЪрдПрд▓, рдлреЗрдбреЛрд░рд╛, рдкрд░ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ .... :( :( :(

рдХреНрдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдиреБрд░рдХреНрд╖рдХ рдпрд╣ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореМрдЬреВрдж рд╣реИ?

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдкреАрдЖрд░ рднреА рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рд▓рдЧрднрдЧ рджреЛ рд╕рдкреНрддрд╛рд╣ рдкреБрд░рд╛рдирд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрддреНрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ... рд╕рдмрдорд┐рдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ рдЖрдИрдЖрд░рд╕реА, рдЯреНрд╡рд┐рдЯрд░, рд╢рд╛рдпрдж рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рднреА рдХреБрдЫ рд╢реЛрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдлрд╝рд┐рдХреНрд╕реЗрд╕ рдХреЛ рдорд░реНрдЬ рдХрд░ рд╕рдХреЗрдВред

рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдПрдХрдорд╛рддреНрд░ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд╕реАрдЖрдИ рдиреМрдХрд░рд┐рдпреЛрдВ рдкрд░ рдмреИрд╢ рд╕рдЦреНрдд рдореЛрдб рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИред

+1

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрд╕ nounset рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛

@ рдЬреИрдХрдм-рдмреЛрдЪреЗрдВрд╕реНрдХреА рд╢рд╛рдпрдж рдЖрдк рдЖрдИрдЖрд░рд╕реА рдкрд░ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рднреА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЛрд░ рджреЗрд╡ рдХреЛ рдЬрдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@ssbarnea рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдЙрдореНрд░ рдХреЗ рд▓рд┐рдП рдЖрдИрдЖрд░рд╕реА рдореЗрдВ рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдкрд░ рдЪрд░реНрдЪрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

рдЖрд╣реЗрдВ...

+1

рдореИрдВрдиреЗ 7 рджрд┐рди рдкрд╣рд▓реЗ рдкреАрдкрд╛-рджреЗрд╡ рдХреЛ рдИрдореЗрд▓ рдХрд┐рдпрд╛ рдФрд░ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдХрд▓ рднреА рдХрд┐рд╕реА рдиреЗ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рд╕реНрдерд╛рдкрд┐рдд win32 рдмрд╛рдЗрдирд░реА рдореЗрдВ рдЯреНрд░реЛрдЬрди рд╣реИ, рдлрд┐рд░ рд╕реЗ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдЖрд╢рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЯреНрд░реЛрдЬрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд┐рд╕реНрдЯреНрд░реЛ рдореЗрдВ рдирд╣реАрдВ рдерд╛, рдпрд╣ рдирд╣реАрдВ рдХрд┐ рдпрд╣ рдореБрдЭреЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛ред

рджреЗрдЦреЗрдВ https://groups.google.com/forum/#!forum/pypa -dev

рдЖрдЬ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛, рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рдПрдХ рдмрдЧ рд╣реИред
:+1: рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ set -euo pipefail рдХреЗ рд▓рд┐рдПред

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЪрд░реНрдЪрд╛ рдХрд╛ рд╕реАрдзрд╛ рд▓рд┐рдВрдХ рд╣реИ: https://groups.google.com/d/topic/pypa-dev/8iVHDOqsj9M/discussion

@pfmoore рдиреЗ рд▓рд┐рдЦрд╛

рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА virtualenv-users рд╕реВрдЪреА рдкрд░ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреА рд╣реИ,

.. рдЬреЛ python-virtualenv рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдХрд▓рд╛; https://groups.google.com/d/topic/python-virtualenv/5xKG8KoBl6g/рдЪрд░реНрдЪрд╛

FWIW, рдореИрдВ .devkit рдореЗрдВ рдЬрд┐рд╕ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ VIRTUAL_ENV_DISABLE_PROMPT=true рдХреЛ source рд▓рд╛рдЗрди рдкрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдореЗрд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ PS1 рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░реЙрдореНрдкреНрдЯ-рд╕реЗрдЯрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рдЕрдХреНрд╖рдо рдХрд░ рджреЗрддрд╛ рд╣реИред

@pjeby @jakub-bochenski @jpuskar @axd1967 рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ

  1. https://github.com/pypa/virtualenv/pull/1089 -- py36 рдкрд░ CI рдкрд░реАрдХреНрд╖рдг рд╕рдХреНрд╖рдо рдХрд░реЗрдВ рдФрд░ py33 рдЫреЛрдбрд╝ рджреЗрдВ
  2. https://github.com/pypa/virtualenv/pull/1087 -- рд╕реАрдЖрдИ рдкрд░ test_active.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ
  3. https://github.com/pypa/virtualenv/pull/1078 -- рдЕрдирдмрд╛рдЙрдВрдб PS1 рд╕рдХреНрд░рд┐рдп рдореЗрдВ рдареАрдХ рдХрд░реЗрдВ

рд╢рд╛рдпрдж рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдЕрдВрддрд┐рдо рджреЛ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкрд╣рд▓реЗ рджреВрд╕рд░реЛрдВ рдХреЛ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдЙрдирдХреА рд╕рдореАрдХреНрд╖рд╛/рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВ, рдпрд╣ рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдореЗрдВ рдХреБрдЫ рд╕рдореАрдХреНрд╖рд╛ рд╢рдХреНрддрд┐ рдХреА рдХрдореА рд╣реИ, рдпрд╣ рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ https://groups.google.com/d/msg/pypa рдкрд░ рдПрдХ рдЕрдиреБрд░рдХреНрд╖рдХ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред

рдлрд┐рд░ рднреА, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдирд╣реАрдВ рдХрд░ рдкрд╛рдКрдВрдЧрд╛ред

@ssbarnea рдХреНрдпрд╛ рдЖрдк рд╣рдореЗрдВ рд╕рдореАрдХреНрд╖рдХ рдХреА рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣реЗ рд╣реИрдВ, рдпрд╛ рдмрд╕ рдПрдХ рд╕рдореАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдФрд░ рдПрдХ +1/рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЫреЛрдбрд╝ рджреЗрдВ?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдХреЛрдИ рднреА рдкреАрдЖрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

1 рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдФрд░ рдХрд┐рдпрд╛ :)

рдХреНрдпрд╛ рд╣рдо рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдИрдЯреАрдП рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдХрдм рдорд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛?

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЕрднреА рднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдЬ рд╕реБрдмрд╣ рдПрдХ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдиреАрдЪреЗ рд▓рд╛рдпрд╛ред

рдПрдбрдмреНрд▓реНрдпреВрдПрд╕ рд▓реИрдореНрдмреНрдбрд╛-рдЖрдзрд╛рд░рд┐рдд рдЫрд╡рд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ рднреА рдЗрд╕рд╕реЗ рдХрд╛рдЯ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: https://github.com/awslabs/serverless-image-handler/blob/master/deployment/build-s3 -dist.sh

рдореИрдВрдиреЗ VIRTUAL_ENV_DISABLE_PROMPT=true source env/bin/activate рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред

@duaneking @robinbowes рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд░рдЦрд░рдЦрд╛рд╡ рд╢рдХреНрддрд┐ рдХреА рдХрдореА рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреГрдкрдпрд╛ https://groups.google.com/forum/#!topic/pypa -dev/SgK9vlu93BY рдкрд░ рдкрдврд╝реЗрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгреА

рдореЗрд░реА рдзрд╛рд░рдгрд╛ рд╣реИ рдХрд┐ PYPA рдЯреАрдо рдЗрд╕ рдкрд░ рддрднреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдЧреА рдЬрдм рдЙрд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓реЗред

FTR рд╣рдо рдЕрднреА рднреА #1087 . рдкрд░ рдорд░реНрдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдВ рдХрд┐ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдмреИрд╢ рд╕рдЦреНрдд рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдЙрджрд╛рд╣рд░рдг рдХреНрдпрд╛ рд╣реИ рдПрдХ рдЧреИрд░-рдЕрдиреБрд░реВрдкрддрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рд╕реЛрд░реНрд╕рд┐рдВрдЧ ?

рд╣рд╛рдБ, рдпрд╣ рдЕрдЬрдЧрд░ 2 рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рд╣реИред

рдЙрдмрдВрдЯреВ 16.04

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ bogdando/ tripo-ci@318d17a рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЛрдб рдХреЛ -u рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рджреЗрдЧрд╛, рднрд▓реЗ рд╣реА рд╡рд╣ рдкрд╣рд▓реЗ рд╕рдХреНрд░рд┐рдп рди рд╣реЛред рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВред

рдпрд╣ рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛:

old_setting=${-//[^u]/}
...
if [[ -n "$old_setting" ]]; then set -u; fi

рдЕрднреА рдореИрдВ рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ (рдмреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрджрд▓реЗрдВ)
рдПрдХ рдмрд╛рд░ рдЬрдм рд▓реЗрдЦрдХ рдЗрд╕ рдлрд┐рдХреНрд╕ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛрдирд╛ (рдмреНрд░реЗрдХрд┐рдВрдЧ рд░рди) рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЖрдкрдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рдЬрд╛рдиреЗ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рдорд┐рд▓ рдЬрд╛рдПрдЧрд╛

set +H -euo pipefail
pushd "${envdir}"
patch -p0 <<< '
--- bin/activate 2018-10-12 09:08:16.991113929 +0200
+++ bin/activate 2018-10-12 09:27:51.505054528 +0200
@@ -54,11 +54,11 @@
 fi

 if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT-}" ] ; then
-    _OLD_VIRTUAL_PS1="$PS1"
+    _OLD_VIRTUAL_PS1="${PS1:-}"
     if [ "x" != x ] ; then
         PS1="$PS1"
     else
-        PS1="(`basename \"$VIRTUAL_ENV\"`) $PS1"
+        PS1="(`basename \"$VIRTUAL_ENV\"`) ${PS1:-}"
     fi
     export PS1
 fi
'
popd
. "${envdir}/bin/activate"

рдЕрднреА рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ https://github.com/pypa/virtualenv/pull/922

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕