Virtualenv: рдЬрдм рдХреЛрдИ virtualenv рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ py3 venv рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдЕрдХреНрддреВре░ 2017  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pypa/virtualenv

рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдХреНрд░рд┐рдп "рд╡рд░реНрдЪреБрдиреЗрд▓" рдХреЗ рддрд╣рдд рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдПрдХ рдЕрдЬрдЧрд░ 3 "рд╡реЗрдирд╡" рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдареАрдХ рд╕реЗ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдиреАрдЪреЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, venv рдФрд░ virtualenv рд╡рд╛рддрд╛рд╡рд░рдг рджреЛрдиреЛрдВ рдЕрдЬрдЧрд░ 3 рдХреЗ "рд╡реЗрдирд╡" рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╛рдж рдХреЛ рдПрдХ рд╕рдХреНрд░рд┐рдп outer virtualenv рдХреЗ рддрд╣рдд рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдХрдИ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЗрд╕рдХреЗ рд╕рд╛рдЗрдЯ-рдкреИрдХреЗрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реИред python -m pip рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рд╕реЗрдЯ рдЕрдк:

[vagrant@vagrant-arch ~]$ python3.6 -m venv venv
[vagrant@vagrant-arch ~]$ virtualenv -p python3.6 outer
[vagrant@vagrant-arch ~]$ source outer/bin/activate
(outer) [vagrant@vagrant-arch ~]$ python -m venv virtualenv

bin рд╕рд╛рдордЧреНрд░реА:

[vagrant@vagrant-arch ~]$ ls venv/bin/
activate  activate.csh  activate.fish  easy_install  easy_install-3.6  pip  pip3  pip3.6  python  python3  python3.6

[vagrant@vagrant-arch ~]$ ls virtualenv/bin/
activate  activate.csh  activate.fish  python  python3

site-packages рд╕рд╛рдордЧреНрд░реА:

[vagrant@vagrant-arch ~]$ ls venv/lib/python3.6/site-packages/
__pycache__  easy_install.py  pip  pip-9.0.1.dist-info  pkg_resources  setuptools  setuptools-28.8.0.dist-info

[vagrant@vagrant-arch ~]$ ls virtualenv/lib/python3.6/site-packages/
[vagrant@vagrant-arch ~]$ 
bug enhancement help-wanted

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

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡реЗрд╡ рдХреА рдУрд░ рд╕реЗ .real_prefix рдбрд╛рдВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХреМрди рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪрд╛рд╣рд┐рдП venv рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд┐ рдпрд╣ рднреАрддрд░ рд╕реЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдПрдХ virtualenv , рдпрд╛ рдЪрд╛рд╣рд┐рдП virtualenv рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ рдмрдирд╛рдиреЗ venv ? рдПрдХ рддрд░рдл, virtualenv venv рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, venv рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рд╖-рд╡реЗрд╡ рдореЗрдВ рдЬреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ:

https://github.com/tox-dev/tox-venv/blob/58401663fda66dfba4f344553525c7373d57432d5e/src/tox_venv/ooks.py#L10 -L49

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкрде рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ python3 рд▓рд┐рдП рджрд┐рдЦрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк python3.6 рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди python3 рдЕрдВрдХ python3.4 ред

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

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ python -m pip "рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ", рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореВрд▓ рд╡рд░реНрдЪреБрдЕрди рдореЗрдВ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИред

(outer) [vagrant@vagrant-arch ~]$ deactivate 
[vagrant@vagrant-arch ~]$ source virtualenv/bin/activate
(virtualenv) [vagrant@vagrant-arch ~]$ python -m pip install tox

рд╕рдХреНрд░рд┐рдп рд╡реЗрдирд╡ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╖рд╛рдХреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

(virtualenv) [vagrant@vagrant-arch ~]$ ls virtualenv/lib/python3.6/site-packages/
(virtualenv) [vagrant@vagrant-arch ~]$ ls virtualenv/bin/
activate  activate.csh  activate.fish  python  python3

рд▓реЗрдХрд┐рди рдореВрд▓ virtualenv рдХреЛ рд╡рд┐рд╖рд╛рдХреНрдд рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

(virtualenv) [vagrant@vagrant-arch ~]$ ls outer/lib/python3.6/site-packages/
__pycache__      pip                  pkg_resources  pluggy-0.5.2.dist-info  py-1.4.34.dist-info  setuptools-36.6.0.dist-info  six.py  tox-2.9.1.dist-info          virtualenv.py       wheel
easy_install.py  pip-9.0.1.dist-info  pluggy         py                      setuptools           six-1.11.0.dist-info         tox     virtualenv-15.1.0.dist-info  virtualenv_support  wheel-0.30.0.dist-info
(virtualenv) [vagrant@vagrant-arch ~]$ ls outer/bin 
activate  activate.csh  activate.fish  activate_this.py  easy_install  easy_install-3.6  pip  pip3  pip3.6  python  python-config  python3  python3.6  tox  tox-quickstart  virtualenv  wheel

рдореИрдВрдиреЗ --copies рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╡реЗрдирд╡ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рд╛ред

рдЗрд╕реЗ рдпрд╣рд╛рдВ рднреА рджреЗрдЦреЗрдВ: https://github.com/pre-commit/pre-commit/issues/755

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ .real_prefix рдиреГрддреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП venv рдУрд░ рд╕реЗ рдПрдХ рдлрд╝рд┐рдХреНрд╕реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ pre-commit рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ

рдпрд╣ рдмреАрдкреАрдУ рдореБрджреНрджрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ: https://bugs.python.org/issue30811

рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд╡реЗрд╡ рдХреА рдУрд░ рд╕реЗ .real_prefix рдбрд╛рдВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдлрд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдХреМрди рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЪрд╛рд╣рд┐рдП venv рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд┐ рдпрд╣ рднреАрддрд░ рд╕реЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдПрдХ virtualenv , рдпрд╛ рдЪрд╛рд╣рд┐рдП virtualenv рдПрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ рдмрдирд╛рдиреЗ venv ? рдПрдХ рддрд░рдл, virtualenv venv рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдУрд░, venv рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдореЗрд░реЗ рдкрд╛рд╕ рд╡рд┐рд╖-рд╡реЗрд╡ рдореЗрдВ рдЬреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ:

https://github.com/tox-dev/tox-venv/blob/58401663fda66dfba4f344553525c7373d57432d5e/src/tox_venv/ooks.py#L10 -L49

рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкрде рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ python3 рд▓рд┐рдП рджрд┐рдЦрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк python3.6 рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди python3 рдЕрдВрдХ python3.4 ред

рдореИрдВрдиреЗ рдРрд╕реЗ рд╣реА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирд╛: https://github.com/pre-commit/pre-commit/blob/805a2921ad0d34698433972c6fcb1a6dca47191d-pre_commit/languages/python_venv.py#L13 -L1339-L1339

(рдореБрдЦреНрдп рдЕрдВрддрд░ рдкреВрд░реНрд╡-рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдореИрдВ bin/$(basename exe) рдмрдЬрд╛рдп bin/python3 рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ)

рдПрд╣, рд╣рд╛рдБ, рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╡реАрд╡реА рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@gaborbernat рдмрд░реНрдбрд╛рд░рд┐рдпреЛ / рдкреНрдпреВ # 173 рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред @ рдХреБрд░рдирд╕реБрдЭрд░ рдХреА рджреЗрдЦрднрд╛рд▓ рдореЗрдВ рдЭрдВрдХрд╛рд░?

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдереАред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдмрд╕ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

1343

@gaborbernat рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдирд╛рдо рдмрджрд▓рдХрд░ "рд╡рд░реНрдЪреБрдЕрди рдХреЗ рдЕрдВрджрд░ рдЪрд▓ рд░рд╣рд╛ рд╡реАрд╡реАрдПрди" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдЗрд╕реЗ # 1339 рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

@FranklinYu рдЕрджреНрдпрддрди рд╢реАрд░реНрд╖рдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ?

рдпрд╣ рдЕрдм рдкреВрд░реЗ рдЬреЛрд░реЛрдВ рдкрд░ # 1366 рдХреЗ рд╕рд╛рде рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИред

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

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

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

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

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

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

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