рдкрд╛рдпрдерди 3.8 рдореЗрдВ, рдпрд╣ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ - рдкреАрдИрдкреА 582 рдкреИрдХреЗрдЬ рдкрд╛рдпрдерди рд╕реНрдерд╛рдиреАрдп рдкреИрдХреЗрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ ред
рдпрд╣ PEP рдкрд╛рдпрдерди рдореЗрдВ __pypackages__
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред __pypackages__
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рдпрд╛ рдХрд╕реНрдЯрдо рдкреИрдХреЗрдЬ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрдпрд╛рдд рдкрд░ рдПрдХ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реЛрдЧреАред рдпрд╣ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг, рд╕рдХреНрд░рд┐рдпрдг рдпрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдиреЗ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ __pypackages__
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдХреЗрдЬ рд╕рдВрд░рдЪрдирд╛ рдкрд╛рдпрдерди 3.8 рдореЗрдВ __pypackages__
рджреЗрдЧреА:
foo __pypackages__ 3.8 lib bottle myscript.py
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдкрд╛рдпрдерди 3.8 рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдкреИрдХреЗрдЬ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдирдХреНрд╕, рдкрд╛рдпрдерди 3.5 рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдореВрд▓ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдПрдХ рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╕рдВрдХреБрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛
рд╕реНрдерд╛рдкрдирд╛ рд▓рдЧрднрдЧ рдкрд╛рдЗрдк рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕рдВрдХреБрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИ --target
рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рдеред рдЗрд╕рдореЗрдВ рд╣рдо рд╕реНрдерд╛рдиреАрдп рд╕рдВрдХреБрд▓ рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдпрд╛ рд╕рд╛рдкреЗрдХреНрд╖ рдкрде рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВред
pip3 install --target="$PWD/__pypackages__/3.5/lib/" bar
$ PWD рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЪрд░ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЯреНрд░реА рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛:
foo __pypackages__ 3.5 lib bar myscript.py
рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЙрдкрдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рдЖрдкрдХреЛ рдмрд╛рдЗрдирд░реА рдХреЛрдб рдХреЗ рд╕рд╛рде рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕реЗ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рд╡рд┐рдХрд▓реНрдкрдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ:
pip3 install --ignore-installed --install-option="--prefix=$PWD/__pypackages__" --install-option="--no-compile" bar
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕реНрдерд╛рдкрдирд╛ рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдкреВрд░реНрдг рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЯреНрд░реА PEP 582 рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдЧрд╛:
foo __pypackages__ lib python3.5 site-packages bar myscript.py
рд╕рдВрдХреБрд▓ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд╣рд╛рдВ рдХреА рдЬрд╛рдПред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, sys.path
рд╕реВрдЪреА рдореЗрдВ рд╕рдВрдХреБрд▓ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрде рдЬреЛрдбрд╝реЗрдВред рдореБрдЦреНрдп (рдкрд╣рд▓реЗ рднрд░реА рд╣реБрдИ) рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдмрд╛рдХреА рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрдХреБрд▓ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
import os import sys _PATH = '/__pypackages__/3.5/lib/' sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)) + _PATH) import bar
рдПрдХрдорд╛рддреНрд░ рд╢рд░реНрдд рдпрд╣ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдореЙрдбреНрдпреВрд▓ __pypackages__
рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд╕рдорд╛рди рд╣реА рдиреЗрд╕реНрдЯрд┐рдВрдЧ рд╕реНрддрд░ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд╛рдпрдерди рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреИрдХреЗрдЬ рдХреЛ рдХреИрд╕реЗ рджреЗрдЦреЗрдВред
PYTHONPATH="$PWD/__pypackages__/3.5/lib/:$PYTHONPATH" python3 ./myscript.py
рдРрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рдЖрдк рдЕрднреА PEP 582 рдХреЗ рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред