рд╣рд╛рдп рдореЗрд░реЗ рджреЛрд╕реНрдд!
рдореИрдВ рдорд╛рдиреВрдВрдЧрд╛ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрд╛рдпрдерди рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдЗрдк рдФрд░ рд╡рд░реНрдЪреБрдиреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрднреА рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ Pipenv рдЬреИрд╕реЗ рдЯреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реВрдВред
рдкрд┐рдкреЗрдирд╡ рдкрд╛рдпрдерди рдореЗрдВ рдХрд╛рдо рдХреЗ рдорд╛рд╣реМрд▓ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдзреБрдирд┐рдХ рдЙрдкрдХрд░рдг рд╣реИред
рдкрд┐рдкреЗрдирд╡ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:
- рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдирд╛ рдФрд░ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛
- рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди Pipfile рдкреИрдХреЗрдЬ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди
- .Env рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЛрдбрд┐рдВрдЧ
рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдкреЗрдирд╡ рдХреЗ рд╕рд╛рде рдкрд┐рдк рдФрд░ рд╡рд░реНрдЪреБрдЕрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ:
рдкрд╛рдЗрдк рдФрд░ virtualenv
$ virtualenv venv $ source venv/bin/activte $ pip install Flask gunicorn $ pip freeze > requirements.txt
pipenv
$ pipenv install Flask gunicorn
рд╢реБрд░реБрдЖрдд рд╣реЛ рд░рд╣реА рд╣реИ
Pipenv рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:
$ pip install pipenv
рдХрд╛рд░реНрдп рдкрд░реНрдпрд╛рд╡рд░рдг рдкреНрд░рдмрдВрдзрди
рдЖрдЗрдП рдкрд╛рдпрдерди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдПрдВ:
$ cd yourproject $ pipenv --python 3.7
рдпрджрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рддреЛ рдЯреАрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдПрдЧреАред
рдЖрдк shell
рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ pipenv shell
рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╢реЗрд▓ рд╕реЗ exit
рд▓рд┐рдП, exit
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
$ exit
рдЖрд╡реЗрджрди рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди
рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, install
рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
$ pipenv install Flask
рдкрд┐рдкреЗрдирд╡ Flask
рдкреИрдХреЗрдЬ рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдкрд┐рдкрдлрд┐рд▓ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛ред
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдкреИрдХреЗрдЬ рдХрд╛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
$ pipenv install Flask==1.0.2
рдЗрд╕ рдЙрдкрдХрд░рдг рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рднреА рдзреНрдпрд╛рди рд░рдЦрд╛ - рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЪрд░рдг рдореЗрдВ рдЬрд┐рди рдкреИрдХреЗрдЬреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрджрд┐ рдЖрдк --dev
рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреИрдХреЗрдЬ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
$ pipenv install pytest --dev
рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдкреИрдХреЗрдЬ рд╕рд╣рд┐рдд рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП:
$ pipenv install --dev
рд╕рдВрдХреБрд▓ рдХреА рд╕реНрдерд╛рдкрдирд╛ рд░рджреНрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ uninstall
рдХрдорд╛рдВрдб рд╣реИ:
$ pipenv uninstall Flask
рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдФрд░ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА Pipfile.lock рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╕реНрд░реЛрдд рдХреЛрдб рдЪрд▓ рд░рд╣рд╛ рд╣реИ
рд╡рд░реНрдЪреБрдЕрд▓рдмреЗрд▓ рд╢реЗрд▓ рдХреЗ рдЕрдВрджрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ:
$ pipenv run python yourapplication.py
рдпрджрд┐ рдХреЛрдИ .env рдлрд╝рд╛рдЗрд▓ рд╣реИ, рддреЛ $ pipenv shell
рдФрд░ $ pipenv run
рдХрдорд╛рдВрдб рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдЗрд╕рд╕реЗ рд▓реЛрдб рдХрд░реЗрдЧрд╛:
$ cat .env DEBUG=1 $ echo $DEBUG 1
рдЖрд╡реЗрджрди рдкрд░рд┐рдирд┐рдпреЛрдЬрди
рдкрд┐рдкреЗрдирд╡ рдЖрдкрдХреЛ - рд╕рд┐рд╕реНрдЯрдо рдзреНрд╡рдЬ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдореВрд▓ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
$ pipenv install --system
рдбреЙрдХрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИред
рдпрджрд┐ рдЖрдк --deploy
рдзреНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Pipenile рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рджреЗрдЧрд╛ рдпрджрд┐ Pipfile.lock рдХреЛ рдкрджрд╛рд╡рдирдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдПрдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИред
рдкрд┐рдкреЗрдирд╡ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЙрдХрдлрд╛рдЗрд▓ рдЙрджрд╛рд╣рд░рдг:
FROM python:3.7 RUN pip3 install pipenv WORKDIR /usr/src/app COPY Pipfile ./ COPY Pipfile.lock ./ RUN set -ex && pipenv install
Pipenv рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдлреНрд▓рд╛рд╕реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди: github.com/fdhadzh/flask-pipenv-example ред