рдкрд╛рдпрдерди рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░

рдкрд╛рдпрдерди рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░


рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╛ рдмреЙрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдЕрдХреНрд╕рд░ рдХрд┐рд╕реА рднреА рдЧреБрдкреНрдд рдЬрд╛рдирдХрд╛рд░реА, рд╡рд┐рднрд┐рдиреНрди рдЯреЛрдХрди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб (рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА, рд╡реЗрдм рд░реВрдкреЛрдВ рдХреЗ рд░рд╣рд╕реНрдп) рд╕реЗ рдирд┐рдкрдЯрддреЗ рд╣реИрдВред рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХрд░рдирд╛, рдЕрдХреЗрд▓реЗ рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛, рдПрдХ рдмрд╣реБрдд рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред


#  .   . API_KEY = 'very_secret_password' 

рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓


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


 #  . from config import API_KEY app = Flask(__name__) app.config['API_KEY'] = API_KEY 

рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░


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


 $ export FLASK_APP=hello.py $ flask run * Running on http://127.0.0.1:5000/ 

рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 import os app.config['API_KEY'] = os.environ.get('API_KEY') 

рдкрд╛рдпрдерди-рдбреЙрдЯреЗрдирд╡ рд▓рд╛рдЗрдмреНрд░реЗрд░реА


рд╣рд░ рдмрд╛рд░ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрдиреЗ рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд╛рдпрдерди-рдбреЙрдЯреЗрдирд╡ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдЯ рдбрд╛рдпрд░реЗрдХреНрдЯрд░реА рдореЗрдВ .env рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:


 pip install python-dotenv 

рдЕрдм рдЖрдк рд╕рднреА рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд╕рд╛рде рдПрдХ .env рдлрд╝рд╛рдЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЬрд░реВрд░рдд рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг, .env рдлрд╝рд╛рдЗрд▓ рдХреЛ .env рдЬреЛрдбрд╝реЗрдВ, рдЗрд╕реЗ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рди рдХрд░реЗрдВред


 import os from dotenv import load_dotenv dotenv_path = os.path.join(os.path.dirname(__file__), '.env') if os.path.exists(dotenv_path): load_dotenv(dotenv_path) 

.Env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ FLASK_APP рдФрд░ FLASK_DEBUG рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрд╡реЗрджрди рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рд╢реНрдпрдХ рд╣реИред


рджрд░реЗрдирд╡ рдЙрдкрдпреЛрдЧрд┐рддрд╛


рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╕рдордп рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред Direnv рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЖрдкрдХреЛ рдпрд╣ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдбрд┐рд░реЗрдиреЗрд╡ рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдкреНрд░рдмрдВрдзрдХ рд╣реИ рдЬреЛ рдмреИрд╢, zsh, tsh рдФрд░ рдЕрдиреНрдп рдЧреЛрд▓реЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдФрд░ рдЕрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд░рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдордВрддреНрд░рдг рд╕реЗ рдкрд╣рд▓реЗ, рд╡рд░реНрддрдорд╛рди рдФрд░ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ .envrc рдлрд╝рд╛рдЗрд▓ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЗрд╕реЗ bash рд╕рдмрдкреИрдЯрд░реНрди рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдЪрд░ рдХреЛ рдлрд┐рд░ direnv рджреНрд╡рд╛рд░рд╛ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╢реЗрд▓ рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


Direnv рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


 sudo apt-get install direnv 

рдЗрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рд╢реЗрд▓ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рд╛рд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмреИрд╢ рдХреЗ рд▓рд┐рдП, ~/.bashrc рдХреЗ рдЕрдВрдд рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдХрдВрд╕реЛрд▓ рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░реЗрдВ:


 eval "$(direnv hook bash)" 

рдбрд┐рд░реЗрдирд╡ рдЙрджрд╛рд╣рд░рдг

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдБ:


 $ mkdir ~/my-project $ cd ~/my-project 

рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ FLASK_APP рд▓реЛрдб рдирд╣реАрдВ рд╣реИ:


 $ echo $FLASK_APP nope 

.envrc рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд▓рд┐рдЦреЗрдВ:


 $ echo export FLASK_APP=hello.py > .envrc .envrc is not allowed 

.envrc рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ direnv allow рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 $ direnv allow . direnv: reloading direnv: loading .envrc direnv export: +FLASK_APP 

рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рднрд╛рд░рд┐рдд рд╣реИ:


 $ echo $FLASK_APP hello.py 

рдЬрдм рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╣реИрдВ, рддреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдЕрдирд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ


 $ cd .. direnv: unloading 

рдФрд░ рдлрд┐рд░ рд╕реЗ рдкрд░реЗрд╢рд╛рди рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ


 $ echo $FLASK_APP nope 

Direnv рдореЗрдВ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛


рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, direnv рдЖрдкрдХреЛ Python рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдЖрдкрдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрдЬрдЧрд░ рдЗрдВрдЯрд░рдкреНрд░реЗрдЯрд░ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреИрдХреЗрдЬ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдЬрдЧрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рд╣рдо рд╡реАрд░рд╡ рдореЙрдбреНрдпреВрд▓ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдбреЗрд░реЗрдирд╡ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред


рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реАрд╡реАрдПрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ ~/.config/direnv/direnvrc (рдкреНрд░рд▓реЗрдЦрди рджреЗрдЦреЗрдВ) рдореЗрдВ ~/.config/direnv/direnvrc ред


рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдирд╛

рдпрджрд┐ рдЖрдк .envrc рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ .envrc рд╣реИрдВ


 layout python-venv 

рддрдм рдЬрдм рдЖрдк рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ direnv direnv рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП .direnv/python-venv-3.7.3 ред
рдПрдХ рдЕрд▓рдЧ рдкрде рдХреЗ рд╕рд╛рде рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд venv рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдЖрдкрдХреЛ VIRTUAL_ENV рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 export VIRTUAL_ENV=.venv 

рдЙрд╕реА рддрд░рд╣, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдирд╛рдП рдЧрдП рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред


рдкрд╛рдпрдерди рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ

рдЕрдЬрдЧрд░ рдХреЗ рд╕рд┐рд╕реНрдЯрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


 layout python-venv python3.6 

рдмреИрд╢ рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ (PS1) рдмрдирд╛рдПрдВ

рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдореИрдиреБрдЕрд▓ рд╕рдХреНрд░рд┐рдпрдг рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмреИрд╢ рдкреНрд░реЙрдореНрдкреНрдЯ (PS1) рдХреЛ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ (рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ (venv) user@comp:~$ ) рд╣реИред рдХрдВрд╕реЛрд▓ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдХреНрд░рд┐рдпрдг рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб ~/.bashrc рдЬреЛрдбрд╝реЗрдВред


 show_virtual_env() { if [[ -n "$VIRTUAL_ENV" && -n "$DIRENV_DIR" ]]; then echo "($(basename $VIRTUAL_ENV))" fi } export -f show_virtual_env PS1='$(show_virtual_env)'$PS1 

рдирдореВрдирд╛ .envrc рдлрд╝рд╛рдЗрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓

рдпрд╣ .envrc рдлрд╝рд╛рдЗрд▓ рдХреЛ рдПрдХ рдлреНрд▓рд╛рд╕реНрдХ рдПрдкреНрд▓реАрдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:


 export VIRTUAL_ENV=venv layout python-venv export FLASK_APP=app.py export FLASK_DEBUG=1 

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


terminal_direnv

Source: https://habr.com/ru/post/hi472674/


All Articles