Virtualenv: рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ

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

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 2to3 рд╡рд░реНрддрдорд╛рди рдореЗрдВ Virtualenv рджреНрд╡рд╛рд░рд╛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдПрдХ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП https://travis-ci.community/t/2to3-command-not-found-in-virtualenv-in-bionic/4495 рджреЗрдЦреЗрдВ рдЬрдм рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдерд╛ - рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ PATH рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ рд▓рд┐рдирдХреНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП

EOL рдХреЗ рдирд┐рдХрдЯ Py2 рдХреЗ рдЖрд▓реЛрдХ рдореЗрдВ, рдЗрд╕рдХреА рдорд╛рдВрдЧ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реА рд╣реИ!


  • [рдПрдХреНрд╕] рдиреНрдпреВрдирддрдо рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрджрд╛рд╣рд░рдг рдпрд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг
$ which 2to3
/home/vmuser/.pyenv/shims/2to3

$ pyenv install 3.6.9
<...>

$ ~/.pyenv/versions/3.6.9/bin/python -m pip install virtualenv
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/db/9e/df208b2baad146fe3fbe750eacadd6e49bcf2f2c3c1117b7192a7b28aec4/virtualenv-16.7.2-py2.py3-none-any.whl (3.3MB)
    100% |тЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИтЦИ| 3.3MB 1.3MB/s 
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.2

$ ~/.pyenv/versions/3.6.9/bin/python -m virtualenv test
Using base prefix '/home/vmuser/.pyenv/versions/3.6.9'
New python executable in /home/vmuser/test/bin/python
Installing setuptools, pip, wheel...
done.

$ . test/bin/activate

(test) $ which 2to3
/home/vmuser/.pyenv/shims/2to3

рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдкрде рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд┐рдЫрд▓реЗ which рдХреЗ рд▓рд┐рдП рдерд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП python рдФрд░ pip рдХреЗ рд╕рдорд╛рдиред

  • [рдПрдХреНрд╕] рдУрдПрд╕ рдФрд░ pip list рдЖрдЙрдЯрдкреБрдЯ
    рдЙрдмрдВрдЯреВ рдмрд╛рдпреЛрдирд┐рдХ рдбреЗрд╕реНрдХрдЯреЙрдк x64
$ ~/.pyenv/versions/3.6.9/bin/python -m pip list
Package    Version
---------- -------
pip        18.1   
setuptools 40.6.2 
virtualenv 16.7.2 
enhancement help-wanted

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

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЕрдкрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рдЕрдВрджрд░ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде python -m lib2to3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА pyenv rehash рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИ?

pyenv rehash рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЪрд▓рдиреЗ рдкрд░ рд╢рд┐рдо рдХреНрдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ?

рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ pyenv рд╕реЗ рдХреБрдЫ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдЕрднреА рднреА pyenv rehash рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИ?

рд╣рд╛рдВред

pyenv rehash рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдЪрд▓рдиреЗ рдкрд░ рд╢рд┐рдо рдХреНрдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ?

рдЪреВрдВрдХрд┐ system рдкрд╛рдпрдерди рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП apt рдкреИрдХреЗрдЬ 2to3 рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХрд╣рддрд╛ рд╣реИ

pyenv: 2to3: command not found

The `2to3' command exists in these Python versions:
<list>

рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВред

рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ pyenv рд╕реЗ рдХреБрдЫ рд▓реЗрдирд╛-рджреЗрдирд╛ рд╣реИред

pyenv рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИред рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рджреВрд╕рд░реЗ which рдХреЗ рд▓рд┐рдП virtualenv рдХреЗ рд╢рд┐рдо рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ python рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИред рдмрдЧ рдпрд╣ рд╣реИ рдХрд┐ virtualenv рдПрдХ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред (рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдерд╛ред рд╢рд╛рдпрдж рдирд╣реАрдВред)

рдЖрд╣, рдареАрдХ рд╣реИ... рд╕рдХреНрд░рд┐рдпрдг рдХреЗ рдмрд╛рдж PATH рдХреНрдпрд╛ рд╣реИ?

(рдореИрдВ рдРрд╕реА рдорд╢реАрди рдкрд░ рдирд╣реАрдВ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХреВрдВ)

(test) vmuser<strong i="5">@ubuntuvm</strong>:~$ echo $PATH
/home/vmuser/test/bin:/home/vmuser/.rbenv/shims:/home/vmuser/.rbenv/bin:/home/vmuser/.pyenv/shims:/home/vmuser/.pyenv/bin:/home/vmuser/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/vmuser/.rvm/bin
(test) vmuser<strong i="6">@ubuntuvm</strong>:~$ ls /home/vmuser/test/bin
activate       activate_this.py  pip     python3
activate.csh   activate.xsh      pip3    python3.6
activate.fish  easy_install      pip3.6  python-config
activate.ps1   easy_install-3.6  python  wheel

рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЕрдкрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рдЕрдВрджрд░ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде python -m lib2to3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

/cc рдЕрдиреНрдп @ pypa/virtualenv-committers рдпрджрд┐ рд╡реЗ рд╕реЛрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдореЗрдВ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдЬреЛрдбрд╝рдирд╛, рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдореИрдВ рдЙрднрдпрд▓рд┐рдВрдЧреА рд╣реВрдВред

рдореИрдВ -0.5 рд╣реВрдВред рдпрд╣ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрд╡реНрдпрд╡рд╕реНрдерд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдм рддрдХ рдХрд┐рд╕реА рдореБрджреНрджреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛ рджреБрд░реНрд▓рдн рд╣реИред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ EOL рдХреЗ рдкрд╛рд╕ Python 2 рд╕реЗ рдпрд╣рд╛рдБ рдХреЛрдИ рдлрд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИред рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдЧреИрд░-рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ PATH рдкрд░ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдореМрдЬреВрдж рд╣реИрдВ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣реЛрд╕реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрддрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ EOL рдХреЗ рдкрд╛рд╕ Python 2 рд╕реЗ рдпрд╣рд╛рдБ рдХреЛрдИ рдлрд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИред

+1

рдпрд╣рд╛рдБ рднреА рдореЗрд░реА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рд╣реИред :)

рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдЧреИрд░-рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ PATH рдкрд░ рдирд╣реАрдВ рд╣реИрдВ

рдУрд╣ред рдХреНрдпрд╛ рдпреЗ Scripts/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ? рдореЗрд░реА рд╕рдордЭ рдпрд╣ рдереА рдХрд┐ рд╡рд░реНрддрдорд╛рди python.org рдЗрдВрд╕реНрдЯрд╛рд▓рд░ рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ PATH рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрдиреНрд╣реЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣реЛрд╕реНрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реНрддрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдЙрд╣ ... "рдПрдкреНрд▓рд┐рдХреЗрд╢рди" рдпрд╣рд╛рдВ рдереЛрдбрд╝рд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реИ - рдХреНрдпрд╛ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдХреБрдЫ рдФрд░ рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдореЗрдЬрдмрд╛рди рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдордЬрдмреВрдд -1 рд╣реВрдВ рдФрд░ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд▓реЛрдЧреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдкрд░ рдЙрднрдпрд▓рд┐рдВрдЧреА рд╣реВрдВред

рдУрд╣ред рдХреНрдпрд╛ рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ/рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ?

рдирд╣реАрдВ, рдЬреЛ рдХреБрдЫ рднреА Scripts рдореЗрдВ рд╣реИ, рд╡рд╣ рд╕реНрдерд╛рдкрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд░реИрдкрд░ рд╣реИрдВ (рдкрд╛рдЗрдк, easy_install рдФрд░ рдПрдХ рдмреЗрд╕ рдЗрдВрд╕реНрдЯрд╛рд▓ рдореЗрдВ рдкрд╣рд┐рдпрд╛)ред рдереЛрдбрд╝рд╛ рдФрд░ рдЖрдЧреЗ рджреЗрдЦрдиреЗ рдкрд░, 2to3.py Tools/scripts (60+ рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЗ рдХрд╛рдлреА рдорд┐рд╢реНрд░рд┐рдд рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде) рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ PATH рдкрд░ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рдЕрдкрдиреЗ рдкрде рдореЗрдВ рдкрд╛рдпрдерди рдЬреЛрдбрд╝реЗрдВ" рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдореЗрдЬрдмрд╛рди рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдкрд░ рдПрдХ рдордЬрдмреВрдд -1 рд╣реВрдВ рдФрд░ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд▓реЛрдЧреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдкрд░ рдЙрднрдпрд▓рд┐рдВрдЧреА рд╣реВрдВред

рдХрдо рд╕реЗ рдХрдо, рдореИрдВ рддрд░реНрдХ рджреВрдВрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдореВрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╛рде рдореЗрдВ рдФрд░ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╣рдо рдРрд╕рд╛ рдХрд░рддреЗ рднреА рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

pradyunsg рдиреЗ рд╢реАрд░реНрд╖рдХ рдмрджрд▓рд╛

рдмрд╕ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ рджрд╛рдпрд░рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдУрдкреА рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ 2to3 рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рдерд╛, рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо 2to3 рдЫрд╛рдпрд╛ рдирд╣реАрдВ рд╣реБрдЖ ред рдХреНрдпрд╛ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВрдиреЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рджрд┐рдпрд╛ рд╣реИ, рдореБрдЭреЗ рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдХреНрд╕ рдкрд░ рдХреЛрдИ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ рдХрд┐ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ "рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рдХреНрдпрд╛ рд╣реИрдВ, рдореИрдВ рдЗрд╕ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИред

рд╣рдореНрдо, pyvenv рд╢рд╛рдпрдж рдПрдХ рдФрд░ "рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ" рд╣реИ, рдФрд░ рдореБрдЭреЗ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдо рдЙрд╕ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЫрд╛рдпрд╛ рдирд╣реАрдВ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗ рд╡реЗрдирд╡ рдЪрд▓рд╛рддрд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рд╛рдн рдХреЗ)ред

рдУрдкреА рдерд╛ ... рджрд┐рд▓рдЪрд╕реНрдкреА ... рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо 2to3 рдЫрд╛рдпрд╛ рдирд╣реАрдВ рд╣реБрдЖред

(рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдореЗрд░реЗ рдореБрдВрд╣ рдореЗрдВ рдХреНрдпрд╛ рдбрд╛рд▓рддрд╛ рд╣реИ, рдЗрд╕рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рд╕реЗ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред)

рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВ virtualenv рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд┐рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП 2to3 рдорд╛рдВрдЧ рд░рд╣рд╛ рд╣реВрдВред

(рдореБрдЭреЗ рдореВрд▓ рдкреЛрд╕реНрдЯ рдХреЛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рджреЗрдВ, рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдЫреЛрдбрд╝рдиреЗ рд╕реЗ рднреНрд░рдо рдкреИрджрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред)

(рдореБрдЭреЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдореВрд▓ рдкреЛрд╕реНрдЯ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рджреЗрдВ)

рдкреВрд░реНрдгред рдореИрдВрдиреЗ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ PATH рдкрд░ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреНрдпреЛрдВ рдереАред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдореЗрд░реЗ рдореБрдВрд╣ рдореЗрдВ рдХреНрдпрд╛ рдбрд╛рд▓рддрд╛ рд╣реИ

рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! (рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдорд╛рдВрдЧ рд░рд╣реЗ рдереЗ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдмрд╣рд╛рд▓ рдХрд░ рджрд┐рдпрд╛ ...)

рдореИрдВрдиреЗ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ PATH рдкрд░ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХреНрдпреЛрдВ рдереАред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрджрд░реНрднрд┐рдд рд▓рд┐рдВрдХ рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдХ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдЬреЛ рднрд░реЛрд╕реЗрдордВрдж рдФрд░ рдЬрд╝реЗрдирд┐рдпрд▓ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдпреЛрдирд┐рдХ рдкрд░ рдирд╣реАрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ рддреЛ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛ред (рдиреЛрдЯ: рдпрд╣ рдПрдХ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рд╣реИ - рднрд▓реЗ рд╣реА, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдорд╛рдорд▓рд╛ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ 2to3.py рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореВрд▓ рдореБрджреНрджрд╛ рдЕрдзрд┐рдХ рд╕реВрдХреНрд╖реНрдо рд╣реЛрдиреЗ рдкрд░ рднреА рд╣рдореЗрдВ рдорд╛рдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдирд╣реАрдВ)ред

рдореИрдВ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЛ 2to3 рдХреЗ рд▓рд┐рдП рд╢рд┐рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реВрдВред

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

рдирд╣реАрдВ, рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рдЬреЛ рдХреБрдЫ рднреА рд╣реИ рд╡рд╣ рд╕реНрдерд╛рдкрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд░реИрдкрд░ рд╣реИрдВ (рдкрд╛рдЗрдк, easy_install рдФрд░ рд╡реНрд╣реАрд▓ рдмреЗрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдореЗрдВ)ред

рдКрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдУрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙрдЙ. рдареАрдХред

рдмрд╕ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдереЛрдбрд╝рд╛ рд╕рд╛ рджрд╛рдпрд░рд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ 2to3 рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╣рд┐рдордкрд╛рдд рдХрд╛ рдПрдХ рдЦрдВрдб рд╣реИ - рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдмрд╛рдХреА рдХреЗ рд▓рд┐рдП рдкреВрдЫрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдПрдЧрд╛ред рд╣рдореЗрдВ рдпрд╛ рддреЛ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмреАрдЪ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдлрдВрд╕рдирд╛ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдо рдпрд╣рд╛рдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

(рдореБрдЭреЗ рдореЛрдмрд╛рдЗрд▓ рдпреВрдЖрдИ рд╕реЗ рдирдлрд░рдд рд╣реИ)

рдпрд╣ "рд╡рд┐рд╢реЗрд╖" рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реИ рдФрд░ рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП PATH рдореЗрдВ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдИ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИрдВред 2to3 рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХреЗрд╡рд▓ pydoc , idle рдФрд░ pyvenv рд╣реИ:

$ ls ~/.pyenv/versions/3.6.9/bin
2to3          easy_install-3.6  idle3.6  pip3.6  pydoc3.6  python3.6         python3.6m         python-config  virtualenv
2to3-3.6      idle              pip      pydoc   python    python3.6-config  python3.6m-config  pyvenv
easy_install  idle3             pip3     pydoc3  python3   python3.6-gdb.py  python3-config     pyvenv-3.6

(рднреА python-config рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)

рдЖрд╣, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж @ рджреЗрд╢реА-рдПрдкреАрдЖрдИ! рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреАред @pfmoore рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдпрд╣ рдХреИрд╕реЗ рдПрдХ рдЧреИрд░-рд╡рд┐рдВрдбреЛрдЬ рдореБрджреНрджрд╛ рд╣реИ, рдЬреЛ рдореЗрд░реА рд╕рдордЭ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред :)

рдореИрдВ рдЕрднреА рднреА рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдкрд░ рдЕрд╕реНрдкрд╖реНрдЯ рд╣реВрдВред

2to3 рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХреЗрд╡рд▓ pydoc, рдирд┐рд╖реНрдХреНрд░рд┐рдп рдФрд░ pyvenv . рд╣реИ

рдореБрдЭреЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЙрддреНрд╕реБрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдЙрд╕ рд╕реВрдЪреА рдХреЛ рдХрд┐рд╕рдиреЗ рдЪреБрдирд╛ред рдХреНрдпрд╛ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ pyvenv рд╣реИ? рдЙрдмрдВрдЯреВ (рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдмреИрд╢, рдФрд░ python3 рд╕реНрдерд╛рдкрд┐рдд рдХреЗ рд╕рд╛рде рдПрдХ рдбреЙрдХрд░ рдЫрд╡рд┐) рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 2to3 рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╛рдпрдерди рдбреЙрдХрд░ рдЫрд╡рд┐ рдореЗрдВ рд╡рд╣реА рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ (рдкреНрд▓рд╕ рдкрд╛рдЗрдк, easy_install рдФрд░ рд╡реНрд╣реАрд▓, рдЬреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рд╕реЗ рдЖрддреЗ рд╣реИрдВ)ред рдпрд╣ рдереЛрдбрд╝рд╛ рд╡рд┐рддрд░рдг-рдирд┐рд░реНрднрд░ рд▓рдЧрддрд╛ рд╣реИ :-( рдХрдо рд╕реЗ рдХрдо рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмрд╛рдЗрдирд░реА рдХреА рд╕реВрдЪреА рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реБрд╕рдВрдЧрдд рд▓рдЧрддреА рд╣реИред

BTW, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╣рдо рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ, рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ pyvenv рдХреЛ рд╢рд╛рдорд┐рд▓ рди рдХрд░реЗрдВред

рдЙрдмрдВрдЯреВ (рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдмреИрд╢, рдФрд░ рдкрд╛рдЗрдерди 3 рдХреЗ рд╕рд╛рде рдПрдХ рдбреЙрдХрд░ рдЫрд╡рд┐ рд╕реНрдерд╛рдкрд┐рдд) рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ 2to3 рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдмрдВрдЯреВ рдореЗрдВ, 2to3 рдХреЛ рдПрдХ рдЕрд▓рдЧ рдкреИрдХреЗрдЬ рдореЗрдВ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

$ apt-file search 2to3 | grep -E '/2to3[^/]*$'
2to3: /usr/bin/2to3
<...>
python2.7: /usr/bin/2to3-2.7
<...>

"рдорд╛рдирдХ рд▓рд┐рдирдХреНрд╕ рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди" рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рдЙрд╕ рддрд░реНрдХ рд╕реЗ рдерд╛ рдЬреЛ рдкрд╛рдЗрдерди рдХреА рд▓рд┐рдирдХреНрд╕ рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИ, рдмрд┐рдирд╛ рдбрд┐рд╕реНрдЯреНрд░реЛрд╕ рдХреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЗ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдЖрдк рд╕реНрд░реЛрдд рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдХрд┐ pyenv рдХрд░рддрд╛ рд╣реИ)ред

рдореИрдВ рдЗрд╕реЗ рдЙрдард╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ рд╕рдХреНрд░рд┐рдпрдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ pydoc рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рд╣реИрдХ рдХреЛ рдмрджрд▓ рджреЗрдЧрд╛ред

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

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

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

mitchhentges picture mitchhentges  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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