рдЙрдмрдВрдЯреВ 10.04 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, --relocatable рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ рд╕реАрдзреЗ рдЕрдЬрдЧрд░ рдмрд╛рдЗрдирд░реА рдпрд╛ рд╕реЗрдЯрдкреНрдЯреВрд▓-рдЬрдирд░реЗрдЯреЗрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░рддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд┐рди/рд╕рдХреНрд░рд┐рдп рдЕрднреА рднреА рдкреБрд░рд╛рдиреЗ рдкрде рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:
> pwd
/home/jhammel
> virtualenv.py foo
New python executable in foo/bin/python
Installing setuptools............done.
> virtualenv.py --relocatable foo
Making script foo/bin/easy_install relative
Making script foo/bin/easy_install-2.6 relative
Making script foo/bin/pip relative
> mv foo bar
> cd bar
> . bin/activate
(foo)> echo $VIRTUAL_ENV
/home/jhammel/foo
(foo)> which python
/usr/bin/python
(foo)>
рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ VIRTUAL_ENV рдПрдХ рдирд┐рд░рдкреЗрдХреНрд╖ рдкрде рдкрд░ рд╕реЗрдЯ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЗрд╕реЗ рд╕рд╛рдкреЗрдХреНрд╖ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм --relocatable рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╕рдХреНрд░рд┐рдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реЛрд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) dirname $0
ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреИрд╢ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ:
command=$(history 1) # this should go at the top of the file
parent_path() {
DIRECTORY=$(dirname ${!#})
cd $DIRECTORY/..
pwd
}
VIRTUAL_ENV=$(parent_path $command)
рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреА рд╕реНрд╡реАрдХреГрддрд┐ рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрдпрд╛рди, рдореБрдЭреЗ рдПрдХ рдкреИрдЪ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред
рдЦрд░рд╛рдм рд╕реНрд╡рд░реВрдкрдг рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ .... рдмрд┐рдЯрдмрдХреЗрдЯ рдиреЗ рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдзреЛрдЦрд╛ рджрд┐рдпрд╛ :(
Original Comment By: Jeff Hammel
рдФрд░ %~dp0%
рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдВрдбреЛрдЬрд╝ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрде рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╡рд░реНрддрдорд╛рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдЬреЛ рдХрд┐ active.bat рдХреЗ рд▓рд┐рдП рд╣реИред
Original Comment By: Sylvain Prat
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдПрдХ рдкреИрдЪ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред
Original Comment By: Jannis Leidel
Original Comment By: Jannis Leidel
рдпрд╣рд╛рдБ рдмреИрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИ:
VIRTUAL_ENV=$(cd $(dirname "$BASH_SOURCE"); dirname `pwd`)
рдФрд░ (рдЯреА) рд╕реАрдПрд╕рдПрдЪ рдХреЗ рд▓рд┐рдП:
set sourced=($_)
set scriptdir=`dirname "$sourced[2]"`
set scriptpwd=`cd "$scriptdir"; pwd`
setenv VIRTUAL_ENV `dirname "$scriptpwd"`
Original Comment By: Anonymous
рдореИрдВ рдпрд╣реА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
VIRTUAL_ENV="$(dirname $(dirname $(readlink --canonicalize --no-newline
$BASH_SOURCE)))"
рдпрд╛ рдЫреЛрдЯреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде
VIRTUAL_ENV="$(dirname $(dirname $(readlink -f -n $BASH_SOURCE)))"
Original Comment By: Matteo Bertini
рдФрд░ рдЕрднреА рднреА tcsh рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк:
рд╕реНрд░реЛрдд рд╕реЗрдЯ рдХрд░реЗрдВ=($_)
рд╕реНрдХреНрд░рд┐рдкреНрдЯрдбрд┐рд░ рд╕реЗрдЯ рдХрд░реЗрдВ = dirname "$sourced[2]"
рд╕реНрдХреНрд░рд┐рдкреНрдЯрдкреАрдбрдмреНрд▓реНрдпреВрдбреА = cd "$scriptdir"; pwd
рд╕реЗрдЯреЗрдВрд╡ VIRTUAL_ENV dirname "$scriptpwd"
рдореИрдВрдиреЗ рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рд╣реИ (рдЬреЛ рдХреЗрд╡рд▓ рдмреИрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ):
https://github.com/pypa/virtualenv/pull/143
рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд▓рд┐рдП, ACTIVATE_BAT рдореЗрдВ рдЖрдк рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
set VIRTUAL_ENV=__VIRTUAL_ENV__
рд╕рд╛рде:
pushd %~dp0..
set VIRTUAL_ENV=%CD%
popd
рдпрд╣ рдЗрд╕реЗ рд╕реАрдзреЗ %~dp0..
рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЖрдк рдЙрд╕реА рдкреВрд░реНрдг рдкрде рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд┐рдирд╛ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рд╕рдХреНрд░рд┐рдпрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЗрд╕ рдЖрдзреЗ рджрд╢рдХ рдкреБрд░рд╛рдиреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЛ рдордЬрдмреВрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╡реАрдирддрдо рдЕрдВрдХ #1067 рдХрд╛ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝рдирд╛ред
рдореИрдВ рдпрд╣реА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ:
VIRTUAL_ENV="$(dirname $(dirname $(readlink --canonicalize --no-newline
$BASH_SOURCE)))"
рдпрд╛ рдЫреЛрдЯреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде
VIRTUAL_ENV="$(dirname $(dirname $(readlink -f -n $BASH_SOURCE)))"
readlink
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд▓рд┐рдирдХреНрд╕, рдмреАрдПрд╕рдбреА/рдореИрдХреЛрдЬрд╝, рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреНрдп рдпреВрдирд┐рдХреНрд╕ рд╕реНрд╡рд╛рджреЛрдВ рдХреЗ рдмреАрдЪ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред
@adah1972 , рдЕрдВрдХ #1067 рдирд╡реАрдирддрдо рд╣реИред рдпрд╣ рдореБрджреНрджрд╛ 2012 рдХрд╛ рд╣реИ, #1067 2017 рдХрд╛ рд╣реИред
@arizvisa рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ #1067 рдореЗрдВ рднреА рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрд░рд╛рдиреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдЧрд░ рдЖрдк рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдмрд╕ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред