Virtualenv: --рд╕рдВрдмрдВрдзреА рд╡рд┐рдХрд▓реНрдк

рдХреЛ рдирд┐рд░реНрдорд┐рдд 10 рдлрд╝рд░ре░ 2020  ┬╖  43рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pypa/virtualenv

рдореИрдВрдиреЗ --relocatable рдЭрдВрдбрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдирдИ рд░рд┐рд▓реАрдЬрд╝ 20.0 рдореЗрдВ рдпрд╣ рдзреНрд╡рдЬ рдирд╣реАрдВ рд╣реИред рдЕрдм рдореИрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреИрд╕реЗ рдмрдирд╛рдКрдВ?

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

рд╣рдо рдПрдХ rpm рдореЗрдВ рдПрдХ рд╡реЗрдирд╡ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --relocatable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред virtualenv $ DESTDIR рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдВрдд рдореЗрдВ /opt/company ред

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

рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд-рд╕рдХреНрд╖рдо рдзреНрд╡рдЬ рд╣рдореЗрд╢рд╛ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛; рд╣рдо рдЕрдм рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдЗрд╕рд▓рд┐рдП рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ)ред рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реЗрдВ, рдФрд░ рд╣рдо рд╡реИрдХрд▓реНрдкрд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

CMD export branch && cd /build_dir && \
 apt-get update -y && apt-get upgrade -y && \
 pip3 install virtualenv && \
 virtualenv --always-copy --python=python3 env && \
 git clone http://user:pass@gitlab/dev/repo.git && \
 cd /build_dir/veil-repo/code/veil-common && \
 git checkout $branch && \
 python3 install.py -p /build_dir/veil-repo/code/cli-app/ -v /build_dir/env && \
 python3 install.py -p /build_dir/veil-repo/code/controller/ -v /build_dir/env && \
 python3 install.py -p /build_dir/veil-repo/code/node/ -v /build_dir/env && \
 cd /build_dir/ && \
 ./env/bin/pip3 install -r requirements.txt && \
 virtualenv --relocatable env

рдпрд╣ рдбреЙрдХрд░рдлрд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЕрдВрд╢ рд╣реИред рдЕрдЧрд░ рдореИрдВ --relocatable рдЭрдВрдбрд╛ рд╣рдЯрд╛рдКрдВрдЧрд╛ рддреЛ рдХреЛрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛? рдпрд╣реА рд╣реИ, рдореБрдЭреЗ рдЕрдкрдирд╛ рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХреЙрдкреА рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдПрдХ рдХрд░реНрддрд╛ рдХреЗ рдЕрдВрджрд░, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ реп реж% рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдЙрд╕ рдбреЙрдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдкрд░реНрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рдкрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреИрд╕реЗ рднрд░реЛрд╕реЗрдордВрдж рд╕рдВрднрд╛рд▓реЗред

рд╣рдордиреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА-рдХрднреА рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░рд╛ CI рд╕рд┐рд╕реНрдЯрдо рд▓рдВрдмреЗ рдирд╛рдореЛрдВ рд╡рд╛рд▓реЗ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ virtualenvs рдмрдирд╛рдПрдЧрд╛ред рдпрд╣ рдирд╛рдо рдХрд╛рдлреА рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛ рдХрд┐ #! рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╣рдо env рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

@ Nitori- рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЯреВрд▓ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП python -m рдлреЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ

рд╕рд╣реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдИ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ рдЦрд░рд╛рдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдЗрд╕ рддрд░рд╣ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдиреЗ рджреЗрддреЗред

@ Nitori- рднрд▓реЗ рд╣реА рдЖрдк рд╣рдореЗрд╢рд╛ рдмрд╛рдЗрдирд░реА рдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рднреАрддрд░ рдЕрдЬрдЧрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрдХреЛрдВ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЛ рдордЬрдмреВрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдЬреИрд╕реЗ

{venv}/bin/python {venv}/bin/bad-bad-tool

рдЬрд╣рд╛рдВ {venv} рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд▓рдВрдмреЗ

рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ рд╣рдо рдЕрдкрдиреА рдкрд╛рдЗрдкрд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ --relocatable рдзреНрд╡рдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╣рдореЗрдВ рдПрдХ virtualenv рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рд╕рдордп рдмрдЪрд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗ - рд╣рдо GitLab рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЪрд░рдг рдореЗрдВ virtualenv рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдПрдХ рд╡рд┐рд░реВрдкрдг рд╕рд╛рдХреНрд╖реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рддреЗ рд╣реИрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЧреБрдЪреНрдЫрд╛ред

рд╣рдордиреЗ virtualenv рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрд┐рди рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╣рдордиреЗ рдирд╡реАрдирддрдо рдХреЛ рдЦреАрдВрдЪрдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдЬ рд╕реБрдмрд╣ рд╣рдорд╛рд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЯреВрдЯ рдЧрдИред рд╣рдордиреЗ рдЙрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкрд┐рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рд╕рдм рдХреБрдЫ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╣рдо рдзреНрд╡рдЬ рдХреЛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬ рд▓реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди, рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рд╕реЗ рдЕрд╡рдЧрдд рдХрд░рд╛рдКрдВрдЧрд╛ рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЭрдВрдбрд╛ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

рдирдП рдРрдк рдбреЗрдЯрд╛ рд╕реАрдбрд░ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд░реНрдЪреБрдЕрдирд╡реНрдпреВ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рд┐рд░реНрдл 100ms рд╕реЗ рдХрдо рдХрд╛ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рдо рдПрдХ rpm рдореЗрдВ рдПрдХ рд╡реЗрдирд╡ рдХреЛ рдмрдВрдбрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП --relocatable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред virtualenv $ DESTDIR рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдВрдд рдореЗрдВ /opt/company ред

рдпрд╣ рдореЗрд░рд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рддреЛ рдЙрддреНрдкрдиреНрди рд░рд╛рд╕реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛?

@gaborbernat рд╣рд╛рдБ!

@gaborbernat рдЕрднреА рднреА, рдЕрдВрддрд┐рдо рд╕реНрдерд╛рди рдкрд░ рддреИрдирд╛рддреА рд╕реЗ рдкрд╣рд▓реЗ,

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ am рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд▓рд╛ рд╣реВрдВред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП @gaborbernat , рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрд┐рд▓реНрдбрдбрд┐рд░ рдФрд░ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

virtualenv рдХреЗ рдкрд╛рд╕ DEST_DIR рддрд░реНрдХ рд╣реИ рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреНрд░рд╛рдордХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред DEST_DIR рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реЗрдирд╡ рд╕реНрдерд╛рди рд╣реИ, рдЬреЛ рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рд╣реИ (рдЬреИрд╕реЗ / usr, / usr / рд╕реНрдерд╛рдиреАрдп, рдЖрджрд┐)ред рддреЛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, virtualenv LOCATION рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░ рджреЗред

рдлрд┐рд░ рдЖрдк --destdir рдпрд╛ --root рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ / рд▓рд┐рдП рдбрд┐рдлреЙрд▓реНрдЯ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣, virtualenv destdir (рдХреБрдЫ рд╣рдж рддрдХ рдЪреБрд░реЛрдЯ) рдХреА рддрд░рд╣ рдЕрд▓рдЧ-рдерд▓рдЧ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдЬрдЧрд░, рдкрд╛рдЗрдк рдФрд░ рдЕрдиреНрдп рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдЬреВрдЭрдирд╛ рдкрдбрд╝реЗрдЧрд╛ред

AFAIK рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдХрдВрд╕реЛрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯреНрд╕ рд╢реЗрдмрдВрдЧ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдкрде рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рддреА рд╣реИрдВред рдЗрди рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХрдВрд╕реЛрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорд╛рдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдФрд░ рд░рдирд┐рдВрдЧ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рддрдм рддрдХ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдХреЛрдИ рднреА рд╢рдЧреБрди рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдм рдЖрднрд╛рд╕реА рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред

@gaborbernat рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рд╕реЗрдЯрдкреВрд▓реЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдореЗрдВ рдФрд░ рд▓рдХреНрд╖реНрдп рд╕реНрдерд╛рди рдкрд░ рджреЛрдиреЛрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

рдореИрдВ рдПрдХ virtualenv-relocate рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореМрдЬреВрджрд╛ рд╡рд░реНрдЪреБрдЕрди рдкрд░ рд╢реЗрдмрдВрдЧреНрд╕ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рдЕрдкрдиреЗ рдирдП рд╕реНрдерд╛рди рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдХреБрдЫ рдЗрд╕ рддрд░рд╣ :

$ virtualenv-relocate /build/dir/venv /opt/company/app/venv
Rewriting shebang of bin/pip.
Rewriting shebang of bin/pip3.5.
...
$

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕реЗрдЯрдкреВрд▓ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИред рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕реНрдерд╛рди A рдореЗрдВ рдмрдирд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реНрдерд╛рди B рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рдЦреИрд░, рд╕реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗрд╡рд▓ PATH рдФрд░ LD_LIBRARY_PATH рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдБ рдХрд┐ C рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдХреЛрдИ рдЗрд╕реЗ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рд▓рд┐рдВрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдпрд╣рд╛рдВ https://github.com/pypa/virtualenv/blob/legacy/virtualenv.py#L1880 -L1894; рд╣рдо рдореВрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рд╕рд╛рдкреЗрдХреНрд╖ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ pth / egg-filesред

рдореЗрд░реА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реА рд╣реИ-relocatable рдФрд░ рдореИрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рд░рд┐рд▓реЗрдХреНрд╡реЗрдмрд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдирд╡реА рдХреЗ рдмрд╛рдж) рдХреЛ рд╡рд░реНрдЪреБрдЕрд▓рд╛рдЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рд╕рд╛рде, virtualenv рдХреЛ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рдерд╛ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ relocatable рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрди рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж python3 рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкреИрдХреЗрдЬреНрдб рд╡рд░реНрдЪреБрдЕрдирд╡ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рд╡рд╣реА usecase рднреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдореИрдХ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ...ред

@ Gagi2k рдЖрдк рд╡рд╣рд╛рдБ рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрддрдорд╛рди relocatable рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдирд╛рдЬреБрдХрддрд╛ рджрд┐рдЦрд╛рдпрд╛; рдПрдиреНрд╡рд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдкреИрдХреЗрдЬ рдХреЛ рдХреИрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рдХреНрд╖рд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рд░реНрднрд░ рд╣реИред рддреЛ рдпрд╣рд╛рдБ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрдЪреБрдЕрди рд╕реНрд╡рдпрдВ рдЕрдкрдиреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднрд░реЛрд╕реЗрдордВрдж рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) ... рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕ рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдХрд╛рдо рд╕реМрдВрдкрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ; рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬрд┐рд╕рдореЗрдВ рд▓рдХреНрд╖реНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЬреНрдЮрд╛рди рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╕ рдФрд░ рдХреНрдпрд╛-рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕рдЪ, рдирд┐рд╖реНрдкрдХреНрд╖ рдмрд┐рдВрджреБред

рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╣реИ рдХрд┐ рдЕрдм рдореБрдЭреЗ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдФрд░ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ + рдХрдИ рдбрд┐рд╕реНрдЯреНрд░реЛрд╕ рдкреБрд░рд╛рдиреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдм рддрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд░рд╛рдиреЗ рд╡рд░реНрдЪреБрдЕрди рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЫрдбрд╝реА рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдореБрдЭреЗ рдпрд╛ рдХрд┐рд╕реА рдФрд░ рдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рди рд╣реЛред

@ Gagi2k рдПрдХ virtualenv-relocate рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВред рдореБрдЭреЗ рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рд╕рд╣рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред https://github.com/spotify/dh-virtualenv/ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@ рд╡реЙрд░реЗрд╕ рдереИрдХреНрд╕ , рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдкреБрд░рд╛рдиреЗ рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░ рд▓рд┐рдпрд╛ рдерд╛ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдИ рдереАред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдбреНрд░реЙрдк-рдЗрди-рд╕реЙрд▓реНрдпреВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдпрд╛ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

@ Gagi2k рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?

@ рдШрдбрд╝реА рдпрд╣ рдЕрднреА рднреА рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ: https://codereview.qt-project.org/c/qt/qtivi/+/290859

рдкреВрд░реЗ virtualenv 20 рдЕрджреНрдпрддрди рдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд░реАрдХреЙрдиреНрд╕реЗрдмрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдм рд╡реЗрдирд╡ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдФрд░ рдЙрд╕ pyvenv.cfg рдХреЗ рд╕рд╛рде рдпрд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рдкреБрд░рд╛рдиреЗ virtualenv рдиреЗ рдмрд╣реБрдд рд╕реЗ рдЖрдзрд╛рд░ py рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рд╣реИ/ рд▓рд┐рдм / рдЕрдЬрдЧрд░(рдпрд╛ рдЗрд╕реЗ рд╕реАрд▓рд┐рдВрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛)ред рдЕрдм рдЙрдирдХреА рдирдХрд▓ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╛рдЗрд╡реЗрдирд╡ рдореВрд▓ рд╕реНрдерд╛рди рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдЬрдм рдореВрд▓ рд╕реНрдерд╛рди рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЗ рд╡рд░реНрдЪреБрдЕрди рдХреЛ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рдЖрд╢рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рдЕрднреА рднреА рд╕рдм рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЗрд╕рд╕реЗ рднреА рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ https://bugs.python.org/issue39469 рд╣реИ , рдЬреЛ рдЗрд╕реЗ рдПрдХ рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд╛рди рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк virtualenv рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд╕реЗрдЯрдЕрдк рдХрд░рддреЗ рд╣реИрдВ ...

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдмрд┐рдирд╛ pyvenv.cfg рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП)ред

@gaborbernat рдореИрдВ рдЬреЛ рдЗрд╕рдХрд╛ рдореВрд▓ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ, рдЙрд╕рдХреЗ рд▓рд┐рдП virtualenv рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЦреБрдж рдХреА python3 рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

@ Gagi2k рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рдХреБрдЫ рдпрд╛рдж рдХрд░ рд░рд╣рд╛ рд╣реВрдБ; рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдЪрд░рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ pyenv.cfg hone рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ?

@gaborbernat рдореИрдВ рдЬреЛ рдЗрд╕рдХрд╛ рдореВрд▓ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ, рдЙрд╕рдХреЗ рд▓рд┐рдП virtualenv рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЦреБрдж рдХреА python3 рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?

рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рд╣рдореЗрд╢рд╛ рдПрдХ рдорд╢реАрди рдкрд░ рдХреБрдЫ рдЕрдЬрдЧрд░ рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП рдереЗред рдЖрдзрд╛рд░ рдзрд╛рд░рдгрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдорд╢реАрди рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЕрдЬрдЧрд░ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИ, рдФрд░ рдЖрдк рдмрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ site-packages рд╣реИрдВред рдореИрдВ рд▓рд┐рдВрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдореВрд▓реНрдп рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЕрдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдкрде рдХреЗ рд╕рд╛рде рд╣реИ), рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдЙрд╕ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдиреАрдЪреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рд╕рднреА PyInstaller рдпрд╛ pex рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдХрд┐рд╕реА рднреА рдЖрд╕рд╛рди рд╕рдВрджрд░реНрдн рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЕрдЬрдЧрд░ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЕрдЧреНрд░рд┐рдо?

@gaborbernat рдЬрд╝рд░реВрд░, рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реИ ...
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ PYTHONHOME рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЯреНрд░рд┐рдХ рднреА рдХрд░рддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╡рд┐рдВрдбреЛрдЬрд╝ рдкрд░ рддреЛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдореВрд▓ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╛рдо рдХрд┐рдП рдмрд┐рдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред

pex рджрд┐рд▓рдЪрд╕реНрдк рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдмрд╛рд░реАрдХреА рд╕реЗ, thx рдХреЛ рджреЗрдЦреВрдВрдЧрд╛ред

@gaborbernat рдЕрднреА рднреА, рдПрдХ рдмрд┐рд▓реНрдбрдбрд┐рдпрд░ рдореЗрдВ рдПрдХ рд╡рд░реНрдЪреБрдЕрди рдХреИрд╕реЗ рдмрдирд╛рдпреЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ .deb рдпрд╛ .rpm рдореЗрдВ рд╢рд┐рдк рдХрд░реЗрдВ?

@gaborbernat рдЬрд╝рд░реВрд░, рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд░рд╣рддрд╛ рд╣реИ ...

рдпрдХреАрди рдирд╣реАрдВ рд╣реЛрддрд╛ рдХрд┐ рд╡реЗ рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдорд╛рдорд▓рд╛ рдХрднреА рдирд╣реАрдВ рдерд╛; рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рдВрднрд╡ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рдмрд╕реЗрдЯ рдореЗрдВ рд╕рдЪ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдпрд╣ v20 рдХреЗ рд╕рд╛рде рдХреНрдпреЛрдВ рдорд┐рд▓рд╛ред

@gaborbernat рдЕрднреА рднреА, рдПрдХ рдмрд┐рд▓реНрдбрдбрд┐рдпрд░ рдореЗрдВ рдПрдХ рд╡рд░реНрдЪреБрдЕрди рдХреИрд╕реЗ рдмрдирд╛рдпреЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ .deb рдпрд╛ .rpm рдореЗрдВ рд╢рд┐рдк рдХрд░реЗрдВ?

@ рдШрдмрд░рд╛рдирд╛ рдпрд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдбрд┐рдмреЗрдЯ / рдЖрд░рдкреАрдПрдо рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ рдХрд┐ рд▓рдХреНрд╖реНрдп рдорд╢реАрди рдкрд░ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдЕрдЬрдЧрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛? рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдмрд╕ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди рд╢реЗрдмрдВрдЧ рдкрде рдХреЛ рдареАрдХ рдХрд░реЗрдВ

рдЕрдЬрдЧрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░

рдкреЛрд╕реНрдЯрд╕реНрдЯреАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯреЛрдВ рдХреЛ dpkg рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ dpkg рдЙрдиреНрд╣реЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдкрд░ рдирд╣реАрдВ рдЫреВрддреЗ рд╣реИрдВред рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИред

AFIAK, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ virtualenv-change-prefix destdir , рдЬреЛ рдЕрдВрддрд┐рдо рдкреИрдХреЗрдЬ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ

@ рдШрдмрд░рд╛рд╣рдЯ рдФрд░ рдХреНрдпрд╛ рдЖрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░рд╡рд╛рд╣реЛрдВ рд╕реЗрдЯ рд╣реЛрдЧрд╛?

@gaborbernat рдкреВрд░реНрдг рд▓рдХреНрд╖реНрдп рд╕реНрдерд╛рдиред рдЬреИрд╕реЗ #!/opt/company/app/venv/bin/python ред

рдЕрдм рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЙрд╕ рдкреИрдХреЗрдЬ рдХреЛ / рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдирдП рд░рд┐рдлреЙрд░реЛрдЯ рдореЗрдВ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЕрдм рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ?

@gaborbernat рд╣рд╛рдБ, рдбрд┐рдЬрд╝рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ред Dpkg / rpm рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЗрдзрд░-рдЙрдзрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ relocatable рд╕реЗ рдХреБрдЫ рдЕрд▓рдЧ рд╣реИред рдЙрджреНрджреЗрд╢реНрдп рд╢рд┐рд░рд╛ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдбрдбрд┐рд░ (рдбреЗрдмрд┐рдпрди / рдмрд┐рд▓реНрдб / ... рдпрд╛% рдмрд┐рд▓реНрдбрдбрд┐рд░) рдФрд░ рд░реБрдВрдбрд┐рд░ (/) рдХреЛ рднреЗрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

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

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреБрдЫ рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдЙрдиреНрд╣реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд┐рдирд╛ред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬ рдХреЛ рдЬрд╝рд┐рдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╡рд┐рддрд░рд┐рдд рд╕реНрдкрд╛рд░реНрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рд░реНрди рдкрд░ рд╕реНрдкрд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ 'рд╕рдВрдЧреНрд░рд╣' рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдСрдкрд░реЗрд╢рди рдПрдирд╛рдХреЛрдВрдбрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред relocatable рдЕрддреАрдд рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬ рдХреЛ рдЬрд╝рд┐рдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╡рд┐рддрд░рд┐рдд рд╕реНрдкрд╛рд░реНрдХ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рд░реНрди рдкрд░ рд╕реНрдкрд╛рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ 'рд╕рдВрдЧреНрд░рд╣' рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдСрдкрд░реЗрд╢рди рдПрдирд╛рдХреЛрдВрдбрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдореЗрд░реА рдХрдВрдкрдиреА рдореЗрдВ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред relocatable рдЕрддреАрдд рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ред

рд╣рд╛рдп @jackhhh , рдХреНрдпрд╛ рдЖрдкрдХреЛ рдореМрдЬреВрджрд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдорд┐рд▓рд╛?
рд╣рдо рдЙрд╕реА рдореБрджреНрджреЗ рдкрд░ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВред

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

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

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

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

LeonSpors picture LeonSpors  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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