Virtualenv: рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ.рд╢ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рдпрджрд┐ 'рд╕рдВрдЬреНрдЮрд╛' рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЬреБрд▓ре░ 2011  ┬╖  24рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pypa/virtualenv

рдЬрдм рдореИрдВ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред

$ source test-env/bin/activate
-bash: _OLD_VIRTUAL_PATH: unbound variable

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдмреИрд╢ рдХреЛ _nounset_ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ рдЕрдирд╕реЗрдЯ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╕рдордп рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХрддрд╛ рд╣реИ ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ)

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

рдЕрднреА рдХреЗ рд▓рд┐рдП рдЙрдкрд╛рдп-

set -o nounset

[...]

set +o nounset
. ~/.env/bin/activate
set -o nounset

[...]

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

рдореИрдВ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдмрджрд▓рдХрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ:
if [ -n "$OLD_VIRTUAL_PATH" ] ; then
рдкреНрд░рддрд┐:
if [ -n "${_OLD_VIRTUAL_PATH=''}" ] ; then
${VAR=DEFAULT} рд╕реЗрдЯ рд╣реЛрдиреЗ рдкрд░ VAR рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рддреЛ DEFAULT ( рдпрд╣ рдкреГрд╖реНрда рджреЗрдЦреЗрдВред рддрдм рд╣рдо рдЦрд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдореЗрд░реА рдкрд╕рдВрдж рд╕реЗ рдереЛрдбрд╝рд╛ рдХрдо рдкрдардиреАрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЪрд╛рд▓ рдХрд░рддрд╛ рд╣реИред

рдЕрд╕рд▓ рдореЗрдВ, рдпрд╣ рдПрдХ рд▓рдВрдЧрдбрд╝рд╛ рдлрд┐рдХреНрд╕ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рдЕрд╕реНрддрд┐рддреНрд╡ рд╕рдВрдмрдВрдзреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдХреЗрд╡рд▓ set -o nounset рдЬреЛрдбрд╝рдирд╛ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЖрд╕рд╛рди рд╣реИред

рдореИрдВрдиреЗ рдпрд╣ рднреА рдорд╛рд░рд╛ред

рдореИрдВ рднреА

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╢рд╛рдпрдж рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдВрджрд░реВрдиреА рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЗ рд▓рд┐рдП -u рдХреЛ рдЕрдирд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЗрд╕реЗ рдореВрд▓ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рдкрд░рд┐рд╖реНрдХрд░рдг рд╕рдордЭ рдореЗрдВ рдЖрдПрдЧрд╛ред

рдореИрдВ рдпрд╣рд╛рдБ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ - http://stackoverflow.com/questions/13494841/how-can-you-ask-bash-for-the-current-options

рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ - https://github.com/pypa/virtualenv/pull/357

рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

if [ -n "$OLD_VIRTUAL_PATH" ] ; then

рдкреНрд░рддрд┐:

if [ -n "${_OLD_VIRTUAL_PATH-}" ] ; then
${var-DEFAULT}  If var not set, evaluate expression as $DEFAULT *

рд╣рд╛рдБ, рдмрд╕ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдорд╛рд░реЛред

virtualenv==1.11.4 рдЪрд▓ рд░рд╣рд╛ рд╣реИред

рдЕрднреА рдХреЗ рд▓рд┐рдП рдЙрдкрд╛рдп-

set -o nounset

[...]

set +o nounset
. ~/.env/bin/activate
set -o nounset

[...]

рдЗрд╕реЗ https://github.com/pypa/virtualenv/pull/723 рджреНрд╡рд╛рд░рд╛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ if ! [ -z "${_OLD_VIRTUAL_PATH+x}" ] ; then рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ $_OLD_VIRTUAL_PATH рдХреЛ рд╣реА #722 рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди #723 рдЗрд╕реЗ рдЕрдиреНрдп рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдареАрдХ рдХрд░рддрд╛ рд╣реИред

:+1:

рдореИрдВ рдЗрд╕реЗ рднреА рдорд╛рд░ рд░рд╣рд╛ рд╣реВрдБ ....

рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдЗрддрдиреА рдЖрд╕рд╛рди рд╕рдорд╕реНрдпрд╛ рдЪрд╛рд░ рд╕рд╛рд▓ рдмрд╛рдж рднреА рдареАрдХ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдмреНрдпреВрдорд╛рд░реНрдЯрд┐рдиреЗрдЬ рдХрд╛ рд╡рд░реНрдХ-рдП-рд░рд╛рдЙрдВрдб рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╣реИред

рдпрд╣ #645 рджреНрд╡рд╛рд░рд╛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдлрд┐рдХреНрд╕реНрдб

@dstufft рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рд░рд┐рд▓реАрдЬрд╝ рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рд╣рдо рдЖрд╢реНрд╡рд╕реНрдд рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рд╣реИ? рдмрдЧ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдлрд┐рдХреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИред

@ssbarnea рдпрд╣ 12 рдЕрдЧрд╕реНрдд 2015 рдХреЛ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрд╕ рддрд╛рд░реАрдЦ рдХреЗ рдмрд╛рдж рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА рд╕рдВрд╕реНрдХрд░рдгред https://virtualenv.pypa.io/en/latest/changes/ рд╕реЗ рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ 13.1.1 (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдиреЛрдЯ рдореЗрдВ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ)ред рд╡рд╣ рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╢рд╛рдпрдж рдЗрд╕реЗ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЦреЛрдЬ рдХреЗ рд╕рд╛рде рдкрд╛ рд╕рдХрддреЗ рдереЗ (рдореИрдВрдиреЗ рдпрд╣реА рдХрд┐рдпрд╛)ред

рдореЗрд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдмреБрд░реА рдЦрдмрд░ рд╣реИ: рдЗрд╕ рдмрдЧ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдореБрдЭреЗ activate: line 13: _OLD_VIRTUAL_PYTHONHOME: unbound variable рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬреЛ рд╕рдЦреНрдд рдмреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ line 22: ZSH_VERSION: unbound variable рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ ... рдФрд░ рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рд╕реВрдЪреА рдХрд┐рддрдиреА рджреЗрд░ рддрдХ рдЪрд▓реЗрдЧреА ... рдореЗрд░реА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХреГрдд рджрд┐рдЦрдиреЗ рд▓рдЧреА рд╣реИ:

PS1="${{PS1:-}}" _OLD_VIRTUAL_PATH="${{_OLD_VIRTUAL_PATH:-}}" _OLD_VIRTUAL_PYTHONHOME="${{_OLD_VIRTUAL_PYTHONHOME:-}}" source "$VENV/bin/activate"

рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдкрд╛рдпрдерди рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рдкреВрд░реНрдг рдкрдердирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЬрд╛рдВрдЪ рди рдХрд░рдиреЗ рдХреА рдЧрд▓рддреА рдХреА рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдкрд░ рдереА рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдмрджрд╕реВрд░рдд рдЦреЛрдЬ рдХреА, рдПрдХ рдкреНрд░рд╛рдЪреАрди рд╕рдВрд╕реНрдХрд░рдг 1.10.1ред рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА рдмрдЧ рдХреЗ рд▓рд┐рдП рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдХрд▓ рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

рдХреЛрдИ рдорд╛рдлреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ; рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рд╕реЗ рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╕реАрдЦреА рд╣реИрдВ
рдмрд╛рддрдЪреАрддред

рдордВрдЧрд▓рд╡рд╛рд░, 7 рдорд╛рд░реНрдЪ, 2017 рдХреЛ рдЕрдкрд░рд╛рд╣реНрди 3:09 рдмрдЬреЗ, рд╕реЛрд░рд┐рди Sbarnea [email protected]
рд▓рд┐рдЦрд╛ рдерд╛:

рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЧрд▓рддреА рдХреА
рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдФрд░ I . рдкрд░ рдереЗ
рдПрдХ рдмрджрд╕реВрд░рдд рдЦреЛрдЬ рдХреА, рдПрдХ рдкреНрд░рд╛рдЪреАрди рд╕рдВрд╕реНрдХрд░рдг 1.10.1ред рдпрд╣ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛
рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреАрдбрд╝реЗред рдореИрдВ рдХрд▓ рдЗрд╕реЗ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/pypa/virtualenv/issues/150#issuecomment-284859700 ,
рдпрд╛ рдереНрд░реЗрдб рдХреЛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AAFWbGU02kdSoecXUESrDHlOUN9Rci5Oks5rjcdvgaJpZM4AQ_Js
.

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрдЧ рдЕрднреА рднреА рд╡рд░реНрддрдорд╛рди рд░рд┐рд▓реАрдЬ рдореЗрдВ рднреА рдореМрдЬреВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ https://github.com/pypa/virtualenv/issues/1029 рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдард╛рдпрд╛

рдпрд╣ рдЕрдм рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИ https://github.com/pypa/virtualenv/pull/922

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

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

npinto picture npinto  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

neildhar picture neildhar  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

erbatyr picture erbatyr  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

LeonSpors picture LeonSpors  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

abn picture abn  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ