рдХрднреА-рдХрднреА рдПрдХ рд╣реА рдорд╢реАрди рдкрд░ рдЕрдЬрдЧрд░ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд░рдЦрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рджреВрд╕рд░реА рдФрд░ рддреАрд╕рд░реА рдкрд╛рдпрдерди рд╢рд╛рдЦрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╛ рдЖрдк рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдЬрдЧрд░ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг
virtualenv рдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
virtualenvwrapper ред рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдИ рд╕рдорд╛рди рд▓реЗрдЦ рд╣реИрдВ, рдФрд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЦреЛрдЬ рдЗрдВрдЬрди рдореЗрдВ
virtualenv рдпрд╛
virtualenvwrapper рд╣рдереМрдбрд╝рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдпрд╣ рдЙрддреНрд╕реБрдХ рд╣реИ рдореИрдВ рдХреИрдЯ рдХреЗ рддрд╣рдд рдкреВрдЫрддрд╛ рд╣реВрдВред
рдЕрдЬрдЧрд░ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдиреНрд╣реЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рджреЛ рд╣реИрдВ:
pythonbrew (рдЬреЛ
рдЕрдм рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ ) рдФрд░
pyenv ред рджреЛрдиреЛрдВ рдкреНрд░рдмрдВрдзрдХ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ (
рдкрд╛рдЗрдереЛрдирдмреНрд░реЗ ,
рдкрд╛рдЗрдиреЗрд╡ ) рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЗрд╕ рдордВрдЪ рдкрд░ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рдпрдерди рдХреЛ рд╣рд╛рде рд╕реЗ рд╕рдм рдХреБрдЫ рд╣рд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрде рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рд╕рд╛рдордирд╛ рдХреМрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЪреВрдБрдХрд┐ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ
pythonbrew рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреБрдирд╢реНрдЪ рд▓реЗрдЦ
рдУрдПрд╕ Ubuntu 12.04 рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ рд╡рд┐рддрд░рдг рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВред
рдореИрдиреБрдЕрд▓ рддрд░реАрдХрд╛ рд╣реИ
рдЕрдЬрдЧрд░ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрдкрд╕рд░реНрдЧ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдорд╛рд░реНрдЯ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдЬрдЧрд░ (2.7.6 рдФрд░ 3.3.2) рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд 2 рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ:
2.7.6$ mkdir -p ~/python/src/ && cd ~/python/src/ $ wget http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz $ tar -xf ~/python/src/Python-2.7.6.tar.xz && cd ./Python-2.7.6 $ ./configure --prefix=$HOME/python/2.7.6/ $ make && make install
3.3.2 рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:
$ wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.xz ~/python/src/ $ tar -xf ~/python/src/Python-3.3.2.tar.xz && cd ./Python-3.3.2 $ ./configure --prefix=$HOME/python/3.3.2/ $ make && make install
рдЕрдм рдЖрдк рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
$ virtualenv -p ~/python/2.7.6/bin/python env && . ./env/bin/activate
рдпрд╛ virtualenvwrapper рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:
$ mkvirtualenv -p ~/python/2.7.6/bin/python evnwrapper
рджрд░рдЕрд╕рд▓, рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░,
рдмрд╣реБ-рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ
рдирд┐рд░реНрдорд╛рдг рдкрд░ рдПрдХ рд▓реЗрдЦ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрдЬрдЧрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЪрд░ рдХреЗ рд▓рд┐рдП рдЕрдЬрдЧрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
$ echo 'export PATH=~/python/2.7.6/bin/' >> ~/.bashrc
рддрджрдиреБрд╕рд╛рд░, рдЖрдк bashrc рдХреЗ рдмрдЬрд╛рдп, рдЕрдкрдиреЗ рд╢реЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ bash_profile, zshrc, kshrc, рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред
$ . ~/.bashrc
рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрд┐рдд
рд╕реЗрдЯрдкреВрд▓ рд╕реЗ рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python $ wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py -O - | python
рдлреВ, рдЦреИрд░, рд╕рдм рдХреБрдЫ рд▓рдЧрддрд╛ рд╣реИред рдФрд░ рдЕрдм рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
PyEnv
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрджрд┐ рдЖрдк рдкрд░реНрдпрд╛рдкреНрдд рдЖрд▓рд╕реА рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╣ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рдЗрдиреЗрд╡ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдФрд░ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рдмрд╛рддрдЪреАрдд рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред
рддреЛ рдЗрд╕ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреНрдпрд╛ рд╣реИ? рдпрд╣рд╛рдБ рд╡рд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд╢рдмреНрджреЛрдВ рд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ:
- рдЖрдк рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред
- рдкреНрд░рддрд┐-рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░реЗрдВред
- рдЖрдкрдХреЛ рдПрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
- рдПрдХ рд╕рдордп рдореЗрдВ рдкрд╛рдпрдерди рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рд╕реЗ рдХрдорд╛рдВрдб рдЦреЛрдЬреЗрдВред рдпрд╣ рд╡рд┐рд╖рд╛рдХреНрдд рдХреЗ рд╕рд╛рде рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкрд╛рдпрдерди рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдг
~/.pyenv/versions/
рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдВрдЧреЗред рдЖрдк рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдФрд░ рд╕реНрдерд╛рдиреАрдп рдПрдХ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП) рджреЛрдиреЛрдВ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдкрд╛рдЗрдиреЗрд╡ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдпрд╣
рдирд┐рд░реНрджреЗрд╢реЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИред рд╕рд╛рде рд╣реА, рд▓реЗрдЦрдХ рдХреЗ рдкрд╛рд╕ рдПрдХ
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЦреБрдж penenv рдХреЗ рд╕рд╛рде-рд╕рд╛рде
virtualenv рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рднреА рд▓рдЧрд╛рддреА рд╣реИред
Virtualenvwrapper рдХреЗ рд▓рд┐рдП рднреА рдкреНрд▓рдЧрдЗрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ
рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛
рд╣реИ :
рд╕реНрдерд╛рдкрдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ рдЧрд┐рдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:
рдЕрдЧрд▓рд╛,
рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдерд╛рдкрд┐рдд
рдХрд░реЗрдВ :
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
рдпрд╛ рддреЛ:
$ curl https://raw.github.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдерд╛рдкрдирд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд▓рдЧ-рдЗрди рдХреЗ рд╕рд╛рде рд╣реЛрдЧреАред
рдЕрдЧрд▓рд╛, рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ bashrc рдХреЛ рдкреВрд░рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╢реЗрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ:
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc $ . ~/.bashrc
рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдпрд╛ рдЗрд╕рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо git рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рд░реНрджреЗрд╢ рдореИрдиреБрдЕрд▓Pyenv рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░ рдЬрд╛рдПрдВ:
$ cd ~/.pyenv
рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП:
$ git tag
рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП
$ git checkout <version>
рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
$ git pull
рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
~ $ pyenv install 2.7.5 ~ $ pyenv install 3.3.2 ~ $ pyenv rehash ~ $ pyenv versions * system 2.7.5 3.3.2 ~ $ pyenv global 2.7.5 ~ $ python --version Python 2.7.5 ~ $ cd projects/ ~/projects $ pyenv local 3.3.2 ~/projects $ python --version Python 3.3.2 ~/projects $ cd test_prj/ ~/projects/test_prj $ python --version Python 3.3.2 ~/projects/test_prj $ cd .. ~/projects $ pyenv local --unset ~/projects $ python --version Python 2.7.5
рд╕рдм рдХреБрдЫ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╡рд┐рд╕реНрддреГрдд рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╣реИ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдЕрдкрдиреЗ
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдЧреАрдереВрдм рдкрд░ ред
рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг
рд╕рдм рдХреБрдЫ, рдФрд░ рдлрд┐рд░ рдЬреИрд╕рд╛ рдЖрдк рдЪрд╛рд╣реЗрдВред рдпрджрд┐ рдЖрдк 3
рд╡реАрдВ рдкрд╛рдпрдерди рд╢рд╛рдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк
рд╡реЗрд╡ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдмрд░ рдкрд░
рдПрдХ рд▓реЗрдЦ рд╣реИред рдпрджрд┐ рдЖрдк
virtualenv рдпрд╛ рдЗрд╕рдХреЗ
virtualenvwrapper рд░реИрдкрд░ рдХреЗ рдЕрдзрд┐рдХ рдЖрджреА рд╣реИрдВ, рддреЛ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдпрд╛ рддреЛ
pyenv рдкреНрд▓рдЧрдЗрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ, рдпрд╛ рдЙрди рдкрд╛рдпрдерди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬрд┐рдирдХреЗ рд╕рд╛рде рдЖрдк рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдЖрдкрдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЕрдЬрдЧрд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдХрдорд╛рдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛:
$ pyenv versions
рдПрдХ рдкреНрд▓рдЧрдЗрди
рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдмрд╕ рдЗрд╕реЗ
pyenv-virtualenv рдпрд╛
pyenv-virtualenvwrapper рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдХреНрд▓реЛрди рдХрд░реЗрдВ:
$ mkdir -p ~/.pyenv/plugins $ git clone git://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv $ git clone git://github.com/yyuu/pyenv-virtualenvwrapper.git ~/.pyenv/plugins/pyenv-virtualenvwrapper
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ
pyenv-virtualenv рдФрд░
pyenv-virtualenvwrapper рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдм рдХреБрдЫ, рдФрд░ рдлрд┐рд░ рдЖрдк рдХреА рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
$ pyenv versions * system 2.7.5 3.3.2 $ mkdir -p ~/test_project/prj_for_2.7.5 && cd ~/test_project/prj_for_2.7.5 $ pyenv virtualenv 2.7.5 my-virtualenv-2.7.5 $ pyenv local my-virtualenv-2.7.5 $ pip install django==1.4 $ pip freeze Django==1.4 wsgiref==0.1.2 $ python --version Python 2.7.5 $ mkdir -p ~/test_project/test_project && cd ~/test_project/test_project $ pyenv virtualenv 3.3.2 my-virtualenv-3.3.2 $ pyenv local my-virtualenv-3.3.2 $ pip install django==1.5 $ pip freeze Django==1.5 $ python --version Python 3.3.2
рдЕрдм, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЕрдЬрдЧрд░ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
pyenv рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдПрдХ
.python- рд╕рдВрд╕реНрдХрд░рдг рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде python рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ
github.com/utahta/pythonbrewgithub.com/yyuu/pyenvgithub.com/yyuu/pyenv-installergithub.com/yyuu/pyenv-virtualenvgithub.com/yyuu/pyenv-virtualenvwrapperdocs.python.org/dev/library/venv.htmlwww.virtualenv.org/en/latestvirtualenvwrapper.readthedocs.org/en/latest