Pipenv: рдкреНрд░рд╕реНрддрд╛рд╡: рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП `рдкрд┐рдкреЗрдирд╡` рдкреИрдЯрд░реНрди рдФрд░ рдПрдВрдЯреАрдкреИрдЯрд░реНрди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЕрдкреНрд░реИрд▓ 2018  ┬╖  74рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pypa/pipenv

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

pipenv рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкреИрдЯрд░реНрди рдФрд░ рдПрдВрдЯреАрдкреИрдЯрд░реНрди

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

рд╕рдВрдкрд╛рджрди рдХрд╛ рдЕрдВрдд

TL; DR : рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ pipenv рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рдХреБрдЫ рднреА рди рдЬреЛрдбрд╝рддреЗ рд╣реБрдП рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЫрд┐рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, Pipfile , Pipfile.lock рдФрд░ .env рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦреЗрдВред

.gitignore рдореЗрдВ рд░рд╣рдиреЗ рд╡рд╛рд▓реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЖрдк pipenv рдХреА рдкреВрд░реА рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрдирд╛рдо рдЕрдЬрдЧрд░ рдЖрд╡реЗрджрди

рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ, рдЬрд┐рд╕рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ setup.py , рдЬрд┐рд╕реЗ рдкрд╛рдЗрдерди рд╕рдВрд╕реНрдХрд░рдг рдФрд░/рдпрд╛ рдУрдПрд╕ рдореЗрдВ рднрд┐рдиреНрди рд╡рд┐рднрд┐рдиреНрди рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╡рд┐рддрд░рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг maya , requests , flask рдЖрджрд┐ рд╣реИрдВред

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

pipfile рдкрд┐рдкрдлрд╛рдЗрд▓ рдмрдирд╛рдо setup.py рдореЗрдВ рдЗрди рдЕрдВрддрд░реЛрдВ рдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

pipenv рдХреНрдпрд╛ рд╣реИ (рддреИрдирд╛рддреА рдЙрдкрдХрд░рдг)

рдореИрдВ рдЗрд╕ рдХрдерди рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ, рдХрд┐ pipenv рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЙрдкрдХрд░рдг рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

  • рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рд╕рдЦреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ ( Pipfile.lock ) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ
  • рд╡рд┐рднрд┐рдиреНрди рдорд╢реАрдиреЛрдВ рдкрд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЙрди рд╕рдЦреНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ

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

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

"рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ" рдХреЛ рдЧрд▓рдд рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛

рдЯреАрдПрд▓; рдбреАрдЖрд░ : pipenv Pipfile.lock рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдЕрдиреБрдореЛрджрд┐рдд рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХреЗрд╡рд▓ рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ (рдЗрд╕ рдкреНрд░рдХрд╛рд░ Pipfile.lock рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛)ред

pipenv рдЗрди рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЪрдордХрддрд╛ рд╣реИ:

  • рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ ( Pipfile )
  • рдЗрд╕рд╕реЗ рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдЙрддреНрдкрдиреНрди Pipfile.lock
  • рдЙрди рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП (рдЖрднрд╛рд╕реА) рдкрд╛рдпрдерди рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдПрдВ
  • рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ рдХрд┐ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд╛рддрд╛рд╡рд░рдг рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ
  • рд╕реНрд╡реАрдХреГрдд рдкрд╛рдпрдерди рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП "рдЧреЛрд▓реНрдбрди" Pipfile.lock рдХреЛ рдЬрд╛рд░реА рдХрд░реЗрдВ
  • рдЕрдиреНрдп рд▓реЛрдЧ pipenv sync рдХрд╛ рдЙрдкрдпреЛрдЧ "рдЧреЛрд▓реНрдбрди" Pipfile.lock рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рдФрд░ рд╕рдорд╛рди рдЕрдЬрдЧрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕рд╛рде рдРрд╕реА рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ред рдЗрд╕ рдирд┐рдпрдо рдХреЛ рддреЛрдбрд╝рдирд╛ (рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕) рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВ рдЬреИрд╕реЗ:

  • рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рдВрддреЛрд╖рдЬрдирдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ (рдкреНрд░рддреНрдпреЗрдХ рд╕рдЦреНрдд рдкреИрдХреЗрдЬ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рдЯреАрдХ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рднрд┐рдиреНрди рд╣реЛрдВрдЧреЗ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдВрд╕реНрдХрд░рдг рдЦреЛрдЬрдиреЗ рд╕реЗ рд░реЛрдХреЗрдВрдЧреЗ)
  • рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг, рдУрдПрд╕ рдпрд╛ рдЕрдиреНрдп рдкрд░реНрдпрд╛рд╡рд░рдг рдорд╛рд░реНрдХрд░реЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдореВрд▓ рд╕рд╛рд░ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕рдорд╕реНрдпрд╛: рдЯреВрдЯреА рд╣реБрдИ setup.py рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЫрд┐рдкрд╛рдирд╛

setup.py install_requires рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рднреА рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ред

рдпрджрд┐ Pipfile рдЙрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЫрд┐рдкрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ:

  • install_requires рдореЗрдВ рд▓рд╛рдкрддрд╛ рдирд┐рд░реНрднрд░рддрд╛
  • Pipfile рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рдпрдореЛрдВ (рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдЖрджрд┐) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ install_requires рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ:

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ Pipfile рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП
  • [packages] рдЕрдиреБрднрд╛рдЧ Pipfile рдпрд╛ рддреЛ рдЦрд╛рд▓реА рд╣реЛрдЧрд╛ рдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ред

рд╕рдорд╕реНрдпрд╛: Pipfile.lock рднрдВрдбрд╛рд░ рдореЗрдВ

рдкреБрд╕реНрддрдХрд╛рд▓рдп рднрдВрдбрд╛рд░ рдореЗрдВ Pipfile.lock (рдЖрдорддреМрд░ рдкрд░ "рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ") рд░рдЦрдирд╛ рдЧрд▓рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐:

  • рд╡рд░реНрдгрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рд╡рд┐рднрд┐рдиреНрди рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдУрдПрд╕ рдореЗрдВ рдЕрдорд╛рдиреНрдп рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ
  • рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХреЗрд╡рд▓ рдЬрдм рд╡реЗ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рддреЗ/рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рддрдм рднреА рдЬрдм рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрджреНрдпрддрди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рднреАрддрд░ рдкреНрд░рдпреЛрдЧ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдХреЛ рдЪрд╛рд╣рд┐рдП:

  • рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ Pipfile.lock рдирд┐рдХрд╛рд▓реЗрдВ рдФрд░ рдЗрд╕реЗ .gitignore

рд╕рдорд╕реНрдпрд╛: tox рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ ( usedevelop рдЫрд┐рдкрд╛рдирд╛)

рдпрджрд┐ tox.ini рдореЗрдВ рдЗрд╕рдХреЗ commands рдЕрдиреБрднрд╛рдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреИрд╕реЗ:

  • pipenv install
  • pipenv install --dev
  • pipenv lock

рдпрд╣ рдЕрдХреНрд╕рд░ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐:

  • pipenv install рдХреЗрд╡рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛, рдФрд░ tox (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ) рдЗрд╕реЗ рднреА рдХрд░ рд░рд╣рд╛ рд╣реИред рджреЛрд╣рд░реЗрдкрди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрд╣ usedevelop=True рдФрд░ usedevelop=False рдХреЛ tox.ini рд░реЛрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Pipenv рдЗрд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ (рдФрд░ tox.ini рд╡рд┐рднрд┐рдиреНрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ)ред

рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдХреЛ рдЪрд╛рд╣рд┐рдП:

  • pipenv рдореЗрдВ tox.ini рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреБрд░реЛрдз рджреЗрдЦреЗрдВ

рд╕рдорд╕реНрдпрд╛: рдпрджрд┐ pipenv рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рд░реНрдорд╛рдг рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ

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

рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдХреЛ рдЪрд╛рд╣рд┐рдП:

  • pipenv рдХреЛ CI рдмрд┐рд▓реНрдб рд╕реНрдХреНрд░рд┐рдкреНрдЯ, tox.ini рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕реНрдерд╛рди рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рджреЛ рдмрд╛рд░ рд╕реЛрдЪреЗрдВред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдореМрдЬреВрджрд╛ рдЯреВрд▓реАрдВрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
  • рдЗрд╕реЗ "рд╕рд┐рд░реНрдл рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ" рдпрд╛ "рд╣рд░ рдХреЛрдИ рдХрд░рддрд╛ рд╣реИ" рдЗрд╕рд▓рд┐рдП рди рдЬреЛрдбрд╝реЗрдВред

рд╕рд╛рд░рд╛рдВрд╢

рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ pipenv рднреВрдорд┐рдХрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдореБрдЦреНрдп рдкреНрд░рд╢реНрди рд╣реИрдВ:

  • pipenv рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдореВрд▓реНрдп рд▓рд╛рддрд╛ рд╣реИ? рдП: рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдгред
  • pipenv рд▓рд┐рдП рд░реАрд▓реЗрд╡реЗрдВрдЯ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдХреНрдпрд╛ рд╣реИ? рдП: рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВред
  • рдХреНрдпрд╛ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рднрдВрдбрд╛рд░ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛? рдП: рдирд╣реАрдВред

рдХреБрдЫ рдФрд░ рд╡рд┐рд╡рд░рдг рдФрд░ рддрд░рдХреАрдмреЗрдВ рдЕрдиреБрд╕рд░рдг рдХрд░рддреА рд╣реИрдВред

pipenv рдЖрдкрдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЛрдИ рд╕реБрд░рдХреНрд╖рд╛ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдЧрд╛

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

рдХрдВрдХреНрд░реАрдЯ (рдФрд░ рд╕реНрд╡реАрдХреГрдд) рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЖрдкрдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдмрд╛рдж рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣реЛрдЧрд╛ред

Pipfile , Pipfile.lock рдФрд░ .env рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рднрдВрдбрд╛рд░ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦреЗрдВ

рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ .gitignore ред

Pipfile рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдпрд╛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдЖрдкрдХреЗ setup.py рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИрдВред рдФрд░ .env рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрднрд╡рдд: рдирд┐рдЬреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рдЬрд┐рд╕реЗ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрдиреЗ рд╕реЗ рдЙрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗрдЧрд╛, рдЬреЛ рд╕реАрдЖрдИ рдмрд┐рд▓реНрдб рдХреЗ рд╕рд╛рде рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЬрдм рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ pipenv рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред

pipenv рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдирд┐рдЬреА рдЯреВрд▓рдмреЙрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ

pipenv рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрд╛рдо рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред

рддрд░рдХреАрдм рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреА (рдирд┐рдЬреА) pipenv рд╕рдВрдмрдВрдзрд┐рдд рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдирд╛ рд╕реАрдЦреЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

$ cd <project_repository>
$ # your library will bring the dependencies (via install_requires in setup.py)
$ pipenv install -e .   
$ # add more dev tools you preffer 
$ pipenv install --dev ipython pdbpp
$ # start hacking
$ pipenv shell
...

рдпрджрд┐ рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ .env рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдпрд╛рдж рд░рдЦреЗрдВ: рдЕрдкрдиреЗ CI рдмрд┐рд▓реНрдб рд╕реЗ pipenv рдЙрдкрдпреЛрдЧ рдХреЛ рджреВрд░ рд░рдЦреЗрдВ рдФрд░ рдЖрдкрдХрд╛ рдЬреАрд╡рди рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЯреНрд░рд┐рдХ: рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП setup.py рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рдЕрдкрдиреЗ setup.py рдореЗрдВ extras_requires рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:

from setuptools import setup

setup(
    name='mypackage',
    ....,
    install_requires=["jinja2", "simplejson"],
    extras_require={
        'tests': ['pytest', 'pyyaml'],
        'pg': ['psycopg2'],
    },
    ....
)

tests рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд▓рд┐рдП рдШреЛрд╖рд┐рдд рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

$ pipenv install -e .[tests]

рдзреНрдпрд╛рди рджреЗрдВ, рдХрд┐ рдЗрд╕рдореЗрдВ рд╣рдореЗрд╢рд╛ install_requires рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреАред

рдпрд╣ рд╡рд┐рдзрд┐ рдбрд┐рдлреЙрд▓реНрдЯ рдФрд░ рджреЗрд╡ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

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

@ Moritz90 рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХреА рдХрдИ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪрд┐рдпрд╛рдБ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реЛрдВрдЧреАред

рдкрд╛рдЗрдкрд╛-рджреЗрд╡ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рдЙрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рдЪрд░реНрдЪрд╛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рддреЛ рд╢рд╛рдпрдж рдореИрдВ рдпрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ред

рдкрд╛рдпрдерди-рд╡рд┐рдЪрд╛рд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЧрд╣ рд╣реИ, рдФрд░ рдкреВрд░реЗ рдкрд╛рдпрдерди рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдЪреНрдЪ рджреГрд╢реНрдпрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рднреА рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреАрдИрдкреА рд╕реНрддрд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЕрдВрддрддрдГ рдЖрдк рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)ред

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

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

/cc @uranusjr @jtratner @ncoghlan

maya рдореБрджреНрджреЛрдВ рдХреЗ рдХреБрдЫ рд╕рдВрджрд░реНрдн:

  • kennethreitz/maya#138 (RemovePipfile.lock рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ)
  • kennethreitz/maya#139 (tox.ini рдореЗрдВ рдкрд┐рдкреЗрдирд╡ рд░рди рдЫреЛрдбрд╝реЗрдВ ...)
  • kennethreitz/maya#145 (setup.py рдореЗрдВ pendulum>=1.0 рдареАрдХ рдХрд░реЗрдВ: рд╕рдВрд╕реНрдХрд░рдг рдкрд┐рдкрдлрд╛рдЗрд▓ рдореЗрдВ рдерд╛ рд▓реЗрдХрд┐рди setup.py рдореЗрдВ рдЧрд╛рдпрдм рдерд╛)
  • Kennethreitz/maya#143 (рдкреАрдЖрд░ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ pipenv рдореБрджреНрджреЗ рдиреЗ рдкреВрд░реЗ рдЯреНрд░реИрд╡рд┐рд╕ рд░рди рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛)
  • kennethreitz/maya#144 (рдЕрд░реНрдз-рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреАрдЖрд░ рд░рд┐рдлреИрдХреНрдЯрд░ рдкрд┐рдкреЗрдирд╡ рдЙрдкрдпреЛрдЧ)

рдореБрдЭреЗ рдпрд╣ рднреА рдкрд╕рдВрдж рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕реЗ рдкрд┐рдкреЗрдирд╡ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг, рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЙрдкрд░реЛрдХреНрдд рд╕рд▓рд╛рд╣ рдХрд╛ рдкрд░рд┐рдгрд╛рдо "рдирд┐рд░реНрдзрд╛рд░рдХ/рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рд╕реАрдЖрдИ рдмрдирд╛рддрд╛ рд╣реИ" рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдореБрдЭреЗ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝реЗ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рд░рддрд╛ рд╣реИред

рдЖрдк рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рднреА рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛?

@ tsiq-oliverc рдирд┐рдпрддрд╛рддреНрдордХ рдмрд┐рд▓реНрдб рдХрд╛ рдЗрд╕ рд╕рдордп рдЕрдкрдирд╛ рд╕реНрдерд╛рди рд╣реИ, рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред

рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдпрд╛рд╕ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ:

  • рдмрд┐рд▓реНрдб Pipfile.lock рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн (рдкреНрд░рддреНрдпреЗрдХ рдкрд╛рдпрдерди рдФрд░ рдУрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рд╕рдВрдпреЛрдЬрди) рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ Pipfile.lock рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк Pipfile рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рд╛рд░ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред
  • рднрдВрдбрд╛рд░ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрд▓рдЧ Pipfile.lock рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рднрдВрдбрд╛рд░ред рдзреНрдпрд╛рди рджреЗрдВ, рдХрд┐ CI рдмрд┐рд▓реНрдб рдХреЗ рджреМрд░рд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ Pipfile.lock рдирд┐рд░реНрдорд╛рдг рдХреЛрдИ рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ

рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рд╣реИред рдФрд░ рдЖрдкрдХреЛ рдЬреЛ рдорд┐рд▓рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдЬрд┐рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдкреНрддрд╛рд╣ рдмрд╛рдж рдорд╛рдирдХ рд╕реНрдерд╛рдкрдирд╛ рдЙрдиреНрдирдд рдирд┐рд░реНрднрд░рддрд╛ рдпрд╛ рджреЛ рдЙрдард╛рдПрдЧреА) рдФрд░ рдЬрд┐рд╕реЗ рддрдереНрдп рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рдЖрдкрдиреЗ Pipfile.lock , рдЬреЛ рдлрд┐рд▓рд╣рд╛рд▓ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реИред

рд╕рдВрдШрд░реНрд╖ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдХрднреА рднреА рд╕рдЦреНрдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╡рд┐рдХрд▓реНрдк рд╣реИ - рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред

@vlcinsky - рдпрджрд┐ рдЖрдкрдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдХреЛрдИ рдЙрдкрднреЛрдХреНрддрд╛ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЖрдкрдХреЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рд▓рдХреНрд╖реНрдп рд╕рдВрднрд╡рдд: рдмрд╣реБрдд рдЫреЛрдЯрд╛ рджрд╛рдпрд░рд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рджреЗрдЦреВрдВрдЧрд╛ (рдЬреЛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рд╕рдордХрдХреНрд╖ рд╣реИрдВ):

  1. рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ CI рджреЛ рдмрд╛рд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ (рдиреЗрдЯрд╡рд░реНрдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж!)
  2. рдЖрдк рд╕реАрдЖрдИ рдкрд░ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдбреАрдмрдЧ) рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЗрд╕рдХрд╛ рдорддрд▓рдм рдбреЙрдХрд░/рдЖрджрд┐ рдЪрд▓рд╛рдирд╛ рд╣реЛред рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗред
  3. рдЖрдк рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ "рдореЗрд░реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЖрдкрдХреЗ рдЙрдкрднреЛрдХреНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╕реНрдХрд░рдг X, Y, Z рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреА рд╣реИ"ред

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

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

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

рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реАрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ Pipfile s рдЬреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдВрдкрдиреА-рд╡реНрдпрд╛рдкреА рд╕реБрд░рдХреНрд╖рд╛ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рд▓реЙрдХрд┐рдВрдЧ (+ рд╣реИрд╢рд┐рдВрдЧ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рд╕рдорд░реНрдерд┐рдд рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реИред рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкрд┐рдкреЗрдирд╡ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рд╕рдореЗрдд рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд╛рд╕ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИред

рдФрд░ рдЖрдкрдХреЛ рдЬреЛ рдорд┐рд▓рддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ, рдЬрд┐рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдкреНрддрд╛рд╣ рдмрд╛рдж рдорд╛рдирдХ рд╕реНрдерд╛рдкрдирд╛ рдЙрдиреНрдирдд рдирд┐рд░реНрднрд░рддрд╛ рдпрд╛ рджреЛ рдЙрдард╛рдПрдЧреА) рдФрд░ рдЬрд┐рд╕реЗ рддрдереНрдп рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рдЖрдкрдиреЗ Pipfile.lock , рдЬреЛ рдлрд┐рд▓рд╣рд╛рд▓ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╣реИред

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

(рд╣рд╛рдБ, рдореИрдВ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдБ, рдпрд╣рд╛рдБ рдПрдХ рдЖрд╡реЗрджрди рдирд╣реАрдВ...)

@ Moritz90 рдЖрдкрдХрд╛ рдкрд░рд┐рджреГрд╢реНрдп рдЙрджреНрдпрдо рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рд╣реИ рдФрд░ рд╡рд╣рд╛рдВ pipenv рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд┐рдпрддрд╛рддреНрдордХ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред

рдореЗрд░рд╛ рд╡рд┐рд╡рд░рдг рд╕рд╛рдорд╛рдиреНрдп рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ flask , request , maya рдЖрджрд┐ рдкрд░ рд▓рдХреНрд╖рд┐рдд рд╣реИ рдЬрд╣рд╛рдВ рд╕рдВрджрд░реНрдн рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╣реИред maya рдореЗрдВ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реБрдП рдореБрдЭреЗ рдпрд╣ рд╕реАрдЦрдиреЗ рдореЗрдВ рдирд┐рд░рд╛рд╢рд╛ рд╣реБрдИ, рдХрд┐ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ pipenv рдиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдВ (рдЖрдорддреМрд░ рдкрд░ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдХреЛ рдЕрдзрд┐рдХ рдпрд╛ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реБрдП рдкреЗрд╢ рдХрд┐рдпрд╛ред рдореВрд▓реНрдпред

рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд▓рд╛рдЧрдд рдЖрддреА рд╣реИред рдФрд░ рдЕрдЧрд░ рдЧрд▓рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрди рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рднреБрдЧрддрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдФрд░ рдпрд╣реА рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

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

@uranusjr - рдЬрд╝рд░реВрд░ред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдЗрдЪреНрдЫрд╛ "рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг" рд╣реИ, рддреЛ рдКрдкрд░ рдХреА рд╕рд▓рд╛рд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖ рд╕рдХрддреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд▓рдЧрднрдЧ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╕рдорд╛рдирддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: "рдпрджрд┐ рдЖрдк рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ ( pipenv ) рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ" .

рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╡рд╛рдВрдЫрдиреАрдп рд▓рдХреНрд╖реНрдп рдирд╣реАрдВ рд╣реИред

@ tsiq-oliverc рдЕрдЪреНрдЫреА рдЧреБрдВрдЬрд╛рдЗрд╢ рдкрд░рд┐рднрд╛рд╖рд╛ - рдпрд╣ рдХреЗрдВрджреНрд░рд┐рдд рдЪрд░реНрдЪрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдПрдХ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЬреЛрдбрд╝реВрдВрдЧрд╛ :

рдпрджрд┐ рд╣рдо Pipenv.lock , рддреЛ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдмрдирд╛рдПрдВ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рд╕реАрдЖрдИ рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдПрдВ, рд╣рдордиреЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХрд┐рдпрд╛ - рдЙрдЪрд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред рдпрджрд┐ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд┐рд╕реА рддрд░рд╣ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ - рдкреВрд░реНрд╡рд╕реНрдерд╛рдкрд┐рдд рд╡рд╛рддрд╛рд╡рд░рдг рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЫрд┐рдкрд╛ рджреЗрдЧрд╛ред

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

рдореБрдЭреЗ рдЧрд▓рдд рдордд рд╕рдордЭреЛ: рдЧреИрд░-рдирд┐рд░реНрдзрд╛рд░рдХ рдмрд┐рд▓реНрдб рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрдИ рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рд╕реАрдЖрдИ рдмрд┐рд▓реНрдб рдЪрд▓рд╛рдиреЗ рдХреА рд╣реИ, рдЬреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдореБрджреНрджреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ред

@vlcinsky рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдЕрджреНрдпрддрди рджрд╕реНрддрд╛рд╡реЗрдЬ рдЗрд╕реЗ рднреА рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЯреНрд░реЗрдбрдСрдлрд╝ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП, setup.py рдореЗрдВ install_requires рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВред [...]
рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкрд┐рдкрдлрд╛рдЗрд▓ рдореЗрдВ рдХрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд┐рдкрдлрд╛рдЗрд▓.рд▓реЙрдХ рдореЗрдВ рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕реЗрдЯ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдВред [...]
рдмреЗрд╢рдХ, рдкрд┐рдкрдлрд╛рдЗрд▓ рдФрд░ рдкрд┐рдкреЗрдирд╡ рдЕрднреА рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

(рдЙрд╕ рднрд╛рдЧ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рдЬреЛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред)

рдореИрдВ рдмрд╕ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЙрд╕реА рддрд░рд╣ рдмрдирд╛ рд░рд╣реЗред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреА рдореВрд▓ рдкреЛрд╕реНрдЯ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрд╕реНрд╡реАрдХрд░рдг рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреНрд▓реИрдВрдХреЗрдЯ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣реИрдВ рдХрд┐ рдЖрдк рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХрд┐ PyPI рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

@ рдореЛрд░рд┐рддреНрдЬрд╝ 9 0 рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВред рдореИрдВ рдЙрд╕ рдлреЛрдХрд╕ рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдФрд░ рднреА рдЬреНрдпрд╛рджрд╛ рджреГрд╢реНрдпрдорд╛рди рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред

@ Moritz90 рдореИрдВрдиреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдиреЛрдЯ рдЬреЛрдбрд╝рд╛ред

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

рдЬрд╝реЛрд░ рд╕реЗ рд╕реЛрдЪрдирд╛, рдЗрди рджреЛ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ? рджреЛ рдЪрд░рдгреЛрдВ рд╡рд╛рд▓реА рд╕реАрдЖрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдиреЗ рдХреА рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ:

  1. рдирд┐рдпрддрд╛рддреНрдордХ рдЪрд░рдгред рдЖрдкрдХреЗ рд░реЗрдкреЛ рдореЗрдВ Pipfile.lock рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред
  2. рдЧреИрд░-рдирд┐рдпрддрд╛рддреНрдордХ рдЪрд░рдгред pipenv update рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рдЖрдкрдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рдирд╡реАрдирддрдо рдореЗрдВ рдЦреАрдВрдЪ рд╕рдХреЗ (рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдмрд┐рдирд╛ рд▓реЙрдХрдлрд╛рдЗрд▓ рд╡рд╛рд▓реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ?)

@ tsiq-oliverc рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреВрдВрдЧрд╛:

  • рдкреАрдкреАрдЖрдИ рдХреИрд╢ рдЬреЙрдм рдмрдирд╛рдПрдВ: рдПрдХ рдмрд╛рд░ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдПрдВ, рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреАрдкреАрдЖрдИ рдЗрдВрдбреЗрдХреНрд╕ рдХреИрд╢ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░реЗрдВ (рдлрд╛рдЗрд▓реЛрдВ рдХреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдпрд╛ рдХреБрдЫ рднреА рд╕рдорд╛рди)
  • рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп: рдкреАрдкреАрдЖрдИ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд▓реЗрдХрд┐рди pipenv рд╕реЗ рдмрдЪрдирд╛

рд╕рдВрд╕реНрдерд╛рдкрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pipenv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЕрд▓рдЧ рдХреЛрдб рд╣реИред

рдкреАрдкреАрдЖрдИ рдХреИрд╢ рдЬреЙрдм рдмрдирд╛рдПрдВ

$ git clone <repo_url> <project_dir>
$ cd <project_dir>
$ pip install pipenv
$ $ # clean pypi cache and make it ready to cache somehow - not described here
$ pipenv install -e .[test]
$ # if we need extra testing packages in pipenv
$ pipenv install <extra_test_packages>
$ # record current requirements expressed in `Pipfile.lock`
$ pipenv lock
$ # if needed, record the `Pipfile.lock` somewhere

рдРрд╕реА рдиреМрдХрд░реА рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ:

  • Pipfile.lock рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ (рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ)
  • рдкреВрд░реНрд╡-рдЖрдмрд╛рджреА рд╕реНрдерд╛рдиреАрдп pypi рдХреИрд╢

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░реАрдХреНрд╖рдг рдХрд╛рд░реНрдп

рдЪрд░рдг рд╣реИрдВ:

  • рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд╕реНрдерд╛рдиреАрдп pypi рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ tox , pip рдЖрджрд┐ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ
  • рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ ( pipenv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪреЗрдВ)

рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд┐рдпрддрд╛рддреНрдордХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рд╣рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡рдпрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИ
  • Pipfile.lock pypi рд╕рдВрдХреБрд▓ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрд╡рд▓рдкрд░ рд╕рд╛рдЗрдЯ рдкрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  • (рд╕рдВрднрд╡рддрдГ рдмрд╛рд╣рд░реА) pypi рдкрд░ рдЕрдкрдЧреНрд░реЗрдб рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рд╕рд░рд▓ рд╣реИ ("рдмрд┐рд▓реНрдб pypi рдХреИрд╢ рдЬреЙрдм рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдПрдБ) рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (pypi рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╣реИрд╢ рд╕рд╣рд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)

рдПрдХ рдФрд░ рдлрд╛рдпрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реЗрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ Pipfile рдпрд╛ Pipfile.lock рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд╛рде рд╣реА рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдорд╛рди рд╣реЛрддрд╛ рд╣реИ ( Pipfile.lock рд╣рдореЗрд╢рд╛ рджрд┐рдП рдЧрдП рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдХреНрдпрд╛ рдЕрднреА рднреА рдЧрд╛рдпрдм рд╣реИ (рдФрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)

рдкреАрдкреАрдЖрдИ рдХреИрд╢ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХреБрдЫ рд╢реЛрдз рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рд╕рд╛рдзрд╛рд░рдг рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧреА рдФрд░ рд╢рд╛рдпрдж pipenv рдЗрд╕рдХреЗ рд▓рд┐рдП рдорджрдж рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рд╣реИред рд╢рд╛рдпрдж рдЕрдВрдХ #1731 рдЧрд╛рдпрдм рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдХрдИ рдкрд░реАрдХреНрд╖рдг рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ - рдЕрд░реНрдерд╛рдд, рдЬреНрдЮрд╛рдд рд╕рд╛рдордЧреНрд░реА рд▓реЗрдирд╛ рдФрд░ рдПрдХ рд╣рд▓ рдХрд┐рдП рдЧрдП рдЧреНрд░рд╛рдлрд╝ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдирд╛ред рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП pytest-pypi рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдЬреАрд╡рдВрдд рдЪрд░реНрдЪрд╛ рдкрд╕рдВрдж рдЖрдИ. рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЬреНрдЮрд╛рдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдирдкрд┐рди рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рдЬреНрдЮрд╛рдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЕрдирдкрд┐рди рдХрд┐рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

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

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

@Moritz90 @techalchemy @uranusjr @tsiq-oliverc

рдкрд┐рдЫрд▓реА рдЪрд░реНрдЪрд╛ рд╕реЗ рдореЗрд░рд╛ рд╕рд╛рд░рд╛рдВрд╢ рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди

рдХрдИ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн - Pipfile.lock рдлрд╝рд╛рдЗрд▓ (рдлрд╝рд╛рдЗрд▓реЛрдВ) рдХреЛ рдХреМрди рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛?

рдкреНрд░рддреНрдпреЗрдХ рд╕рдорд░реНрдерд┐рдд рдУрдПрд╕ рдФрд░ рдкрд╛рдпрдерди рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрддрд╛ рд╣реИред

рдЬреИрд╕реЗ рдлреНрд▓рд╛рд╕реНрдХ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рд╕реАрдЖрдИ рд╕рд╛рдорд╛рди рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ):

  • рдУрдПрд╕ рд╡рд┐рдВрдбреЛрдЬ (рдкрд╛рдпрдерди 2.7 рдФрд░ рдкрд╛рдпрдерди 3.6)
  • рд▓рд┐рдирдХреНрд╕ (рдЕрдЬрдЧрд░ 2.7, 3.4, 3.5, 3.6, рд░рд╛рддреНрд░рд┐рдХрд╛рд▓реАрди, рдкреАрдкреАрдЖрдИ)
  • рдУрдПрд╕рдПрдХреНрд╕ (рдкреАрдИ - рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдФрд░ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ)

рдпрд╣ 9 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдкреНрд░рддреНрдпреЗрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдореЗрдВ рднрд┐рдиреНрди Pipfile.lock ред

рдЙрдирдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдХреМрди рдХрд░реЗрдЧрд╛?

рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:

  • рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рджреЗрдВ (рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ)
  • рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рдордВрдЪ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ Pipfile.lock рдмрдирд╛рдП рд░рдЦреЗрдВ (рдХрд┐рд╕ рдордВрдЪ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдкрд╕рдВрдж рд╣реИ?)
  • рд╕реАрдЖрдИ (рд╣рд╛рдБ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд░реНрдорд╛рдг

рдкреНрд░рд╕реНрддрд╛рд╡: рд╕реАрдЖрдИ рдХреЛ pipenv install -e . рджреНрд╡рд╛рд░рд╛ рдлрд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рджреЗрдВред рдЗрд╕реЗ рд░реЗрдкреЛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рди рдХрд░реЗрдВ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрд┐рд▓реНрдб рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЙрдЪрд┐рдд Pipfile.lock рдЪреБрдирдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВред

рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдкреВрд░реНрд╡рд╛рдиреБрдореЗрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╕рдордп, рдЬреЛ pypi рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╡рд┐рдлрд▓ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдорд╛рдзреНрдпрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡:

  • рдХрдИ рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рд▓рд┐рдП, рдкреАрдкреАрдЖрдИ рдирд┐рд░реНрднрд░рддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЗрддрдиреЗ рджреБрд░реНрд▓рдн рд╣реИрдВ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИрдВ
  • рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕реНрд╡рдпрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ Pipfile.lock рджреНрд╡рд╛рд░рд╛ pipenv install -e . рдЙрд╕рдХреЗ рдмрд╛рдж pipenv lock рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рд╡рд┐рдлрд▓ рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЗрд╡рд▓рдкрд░ рд╡рд┐рдлрд▓ рдкрд░реАрдХреНрд╖рдг рд╕реЗ Pipfile.lock ред
  • рдЯреВрдбреВ: рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдПрдВ, Pipfile.lock рдореЗрдВ tox.ini рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВред

рд╕реАрдЖрдИ рдХреЛ рдЯреВрдЯрд╛ рд╣реБрдЖ setup.py рдкреНрд░рдХрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рдкреБрд╕реНрддрдХрд╛рд▓рдп setup.py рдХреЛ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ( install_requires рдореЗрдВ рдЕрдиреБрдкрд▓рдмреНрдз рдирд┐рд░реНрднрд░рддрд╛, рдЕрдиреБрдкрд▓рдмреНрдз рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдЖрджрд┐) рдФрд░ CI рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рд┐рдП (рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЫреЛрдбрд╝реА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреВрд░реНрд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ)ред

рдкреНрд░рд╕реНрддрд╛рд╡:

  • рд╕рд╛рджреЗ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pipenv install -e . рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реЗрдВ (рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ)ред
  • рд╕рд╛рджрд╛ рд╕реНрдерд╛рдкрдирд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдПрдВ (рдмрд┐рдирд╛ pipenv ) рдФрд░ рд╕рдВрднрд╡рддрдГ рддреБрд▓рдирд╛ рдХрд░реЗрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдореА pip freeze рдЖрдЙрдЯрдкреБрдЯ pipenv рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЧрдП рд╕рдмрд╕реЗрдЯ рдХрд╛ рд╕рдмрд╕реЗрдЯ рд╣реИред

рдЕрджреНрдпрддрди pypi рдирд┐рд░реНрднрд░рддрд╛ рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреА рд╣реИ, CI рдРрд╕реЗ рдкреАрдЫрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛

рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдЕрджреНрдпрддрди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╕реАрдЖрдИ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдкрд░ рд╡рд┐рдлрд▓рддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ред

рдкреНрд░рд╕реНрддрд╛рд╡:

  • рдЕрдирдкрд┐рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╡рд┐рд░реБрджреНрдз рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдпрджрд┐ CI рд╣рдореЗрд╢рд╛ рдирдпрд╛ Pipfile.lock рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЧреИрд░-рдореБрджреНрджрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╡реИрд╕реЗ рднреА рдЕрдирдкрд┐рди рдореЛрдб рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ)

рд╡рд┐рднрд┐рдиреНрди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдЖрдИ рдореЛрдб

рд╕рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдореЛрдб рдореЗрдВ рдореИрдВрдиреЗ pipenv рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗрд╡рд┐рдВрдЧ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд░рдЦрдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╕рд╛рдорд╛рди (рд╕реНрд╡рдЪрд╛рд▓рди !!!) рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рдореВрд▓ рдкрд╛рда рдХреЗ рд╡рд┐рдкрд░реАрдд рджреВрд╕рд░рд╛ рдФрд░ рддреАрд╕рд░рд╛ рдореЛрдб рд╕реАрдЖрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ pipenv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдореЛрдб: рднрд╛рдЧреЛ, рдлреЙрд░реЗрд╕реНрдЯ, рднрд╛рдЧреЛ!

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

рдмрд╕ pipenv рдпреБрдЧ рд╕реЗ рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рджреМрдбрд╝реЗрдВ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рд░рд▓ рд░рдЦреЗрдВред

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

рдореЛрдб: рдЬреЗрдирд░реЗрдЯ рдФрд░ рд╕реАрд▓

рд╣рд░ рдмрд╛рд░ рдЬрдм рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирдпрд╛ Pipfile.lock рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ рдЬреЛ рдЗрд╕ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкрд░реНрдпрд╛рд╡рд░рдг рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред

Pipfile.lock CI рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдмрди рдЬрд╛рдПрдЧрд╛ред

рдЕрдЧрд░ рдЪреАрдЬреЗрдВ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдбреЗрд╡рд▓рдкрд░ рдЯреВрдЯреЗ рд╣реБрдП рдирд┐рд░реНрдорд╛рдг рд╕реЗ Pipfile.lock рдЪреБрди рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЕрдЧрд░ рдХреЛрдИ рддреИрдирд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдкрд┐рдЫрд▓реЗ рд╕рдлрд▓ рдирд┐рд░реНрдорд╛рдг рд╕реЗ Pipfile.lock рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореЛрдб: рд╣рд┐рдордпреБрдЧ

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

рдпрд╣ рд╕реАрдЖрдИ рд╕реЗрдЯрдЕрдк рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдХрдард┐рди рдмрдирд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдп рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП (рдПрдХ Pipfile.lock рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛)ред

рдЪреЗрддрд╛рд╡рдиреА: Pipfile.lock рдЗрд╕ рд╕рдордп рднреА рдЕрдкрдбреЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, setup.py рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ, рдХрд┐ рд╣рд┐рдордпреБрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реИрдЯ рдХреЛ рдЧрд┐рд▓рд╣рд░реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдЬрдореЗ рд╣реБрдП рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдирдкрд┐рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред

рдЕрдВрддрд┐рдо рд╢рдмреНрдж

рдЬреИрд╕рд╛ рдХрд┐ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдирд┐рдпрддрд┐рд╡рд╛рдж рдФрд░ рдЬрдЯрд┐рд▓рддрд╛ рдореЛрдб рджреНрд╡рд╛рд░рд╛ рдореЛрдб рдореЗрдВ рдмрдврд╝рддреА рд╣реИред

рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реЛрдЧрд╛:

  • рд╕рд░рд▓ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ ("рднрд╛рдЧреЛ, рдлрд╝реЙрд░реЗрд╕реНрдЯ, рднрд╛рдЧреЛ")ред рдЖрдк рджрдХреНрд╖рддрд╛ рдФрд░ рдЧрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
  • рдпрджрд┐ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдХрд╛рд░рдг рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ, рддреЛ "рдЬреЗрдирд░реЗрдЯ рдФрд░ рд╕реАрд▓" рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВред рдЖрдк рд╕реНрдерд╛рдиреАрдп рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рджреЛрд╣рд░рд╛рд╡ рд╣рд╛рд╕рд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред
  • рдЕрдЧрд░ рдЪреАрдЬреЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд░рд╛рдм рд╣реИрдВ, рддреЛ "рдЖрдЗрд╕ рдПрдЬ" рдореЛрдб рдкрд░ рдЬрд╛рдПрдВред рдЖрдк (рдЕрд╕реНрдерд╛рдпреА) рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рднреА рд▓рд╛рдн рдХреБрдЫ рди рдХреБрдЫ рдЦрд░реНрдЪ рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рдпрд╣рд╛рдВ рд▓рдХреНрд╖реНрдп рдбреЙрдХреНрд╕ рдореЗрдВ рд╕рд▓рд╛рд╣ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХреБрдЫ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреИрд░-рдЬрд┐рдореНрдореЗрджрд╛рд░ рд▓рдЧрддрд╛ рд╣реИ "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ (рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдмрд┐рд▓реНрдб) рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рдЬрдм рддрдХ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рди рд╣реЛред"

@vlcinsky рд╢реАрд░реНрд╖рдХ "рдореЛрдб: рдЬреЗрдирд░реЗрдЯ рдФрд░ рд╕реАрд▓" рдХреЗ рддрд╣рдд, рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рд╕рдлрд▓ Pipfile.lock рд╣рдореЗрд╢рд╛ рдЖрд╕рдкрд╛рд╕ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЬреЗрдирдХрд┐рдиреНрд╕ рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдХреЗред рдЙрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде, рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕ рд╕реЗрдЯрдЕрдк рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рдирд╛ рдареАрдХ рд░рд╣реЗрдЧрд╛ред @ Tsiq-oliverc рдХреА рддрд░рд╣, рдореИрдВ рдкрд╣рд▓реЗ рдореЛрдб рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

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

@ tsiq-oliverc рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд "рд░рди, рдлреЙрд░реЗрд╕реНрдЯ, рд░рди" рдореЛрдб рдореЗрдВ рд╣реИрдВред рдореИрдВрдиреЗ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкреИрдХреЗрдЬреЛрдВ рдХреЛ tox рдФрд░ pytest , рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдпрд╣ рдкреИрдХреЗрдЬ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджреЗрдЧрд╛ рдФрд░ рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдЪрд╛рд░ рдерд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рдореИрдВ рдлреНрд▓рд╛рд╕реНрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХреНрдпрд╛ рдХрд╣реВрдВрдЧрд╛?

  1. рдЬрдм рддрдХ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рди рд╣реЛ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ (рдкреБрдирд░реБрддреНрдкрд╛рджрд┐рдд рдмрд┐рд▓реНрдб) рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ?
  2. 9 Pipfile.lock рдлрд╝рд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрддрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ?
  3. рдЯреНрд░реИрд╡рд┐рд╕ рдФрд░ рдПрдкрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд░рд┐рдлреИрдХреНрдЯрд░ рд╕реАрдЖрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рд┐рдордпреБрдЧ рдореЛрдб рдХреЗ рдмрд╛рдж рджреЛ рдЪрд░рдг рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?
  4. рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП Pipfile.lock рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреНрд░реИрд╡рд┐рд╕ рдФрд░ рдПрдкрд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╕реАрдЖрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ, рдЬрдм рдХрд┐рд╕реА рдХреЛ рдЕрдкрдиреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЕрд╕рдлрд▓ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ?
  5. "рдлреНрд▓рд╛рд╕реНрдХ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж" рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреЛрдИ рдЯрд┐рдкреНрдкрдгреА рдирд╣реАрдВред

рд▓рдХреНрд╖реНрдп рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╛рд░реНрдп рд╢реИрд▓реА рдЦреЛрдЬрдирд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдбреЙрдХреНрдЯрд░ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВред

@vlcinsky рдореИрдВ рдХрд╣реВрдВрдЧрд╛ (1) рдФрд░ (4) рдРрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЬрдмрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж Pipfile.lock рдЖрдк рдмрд┐рд▓реНрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ (рдЬреЛ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд╣рд░ рдареАрдХ рд╣реИ), рдпрджрд┐ рдЖрдк рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдЬрдирд░реЗрдЯ рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ рддреЛ рднреА рдЖрдкрдХреЛ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗрдЧрд╛ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рдиред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд╛ рдЯреАрдПрд▓; рдбреЙ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛:

  • рд╣рдореЗрд╢рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдмрд┐рд▓реНрдб рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ, рднрд▓реЗ рд╣реА рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реЛрдВред pipenv рдЗрд╕ рд▓рдХреНрд╖реНрдп рдХреЛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
  • рдпрджрд┐ рдЖрдк рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ рднрдВрдбрд╛рд░ рдореЗрдВ Pipfile.lock рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред (рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрджрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред)
  • рдпрджрд┐ рдЖрдк рдПрдХ рдУрдкрди-рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЕрдкрдиреЗ CI рдмрд┐рд▓реНрдб рдореЗрдВ рдСрди-рдж-рдлреНрд▓рд╛рдИ Pipfile.lock рдЬреЗрдирд░реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рдЖрд░реНрдХрд╛рдЗрд╡ рдХрд░реЗрдВред
  • рдпрджрд┐ рдЖрдк рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЙрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВ рдФрд░ рдЕрдкрдиреЗ рд╕реАрдЖрдИ рдмрд┐рд▓реНрдб рдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

(рдмреЗрд╢рдХ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рд╡рд░рдг рдФрд░ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред)

@ Moritz90 рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛, рдореИрдВрдиреЗ "рдЬреЗрдирд░реЗрдЯ рдПрдВрдб рд╕реАрд▓" рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ред

рдкреБрди (1): рдХрд╣рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред

рдкреБрди (4): рд╣рд╛рдБ, рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдЬреЗрдирд░реЗрдЯ рдФрд░ рд╕реАрд▓" рд╕рдмрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рддрд░реАрдХрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлреНрд▓рд╛рд╕реНрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореЗрд░реА рд╣рд┐рдореНрдордд рдирд╣реАрдВ рд╣реЛрдЧреА (рдХрдо рд╕реЗ рдХрдо рдлрд┐рд▓рд╣рд╛рд▓ рддреЛ рдирд╣реАрдВ)ред

рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж Pipfile.lock : рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рддрд░рд╣ (рдЕрд░реНрдз) рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЖрдк рд╕реАрдзреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ pypi рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдирд┐рдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдХреЗрд╡рд▓ рд╕реНрд╡реАрдХреГрдд рдкреИрдХреЗрдЬ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ( devpi-server рдЙрд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдХрдИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛, рдкреНрд░рдХрд╛рд╢рд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХреА рдирд┐рдпрдВрддреНрд░рд┐рдд рдЕрд╕реНрдерд┐рд░рддрд╛, рдмрд╛рд╣рд░реА рдХреЗ рд▓рд┐рдП рдЕрдиреБрдореЛрджрди рдкреИрдХреЗрдЬ рдЖрджрд┐) рдпрджрд┐ Pipfile.lock рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдРрд╕реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рддреА рд╣реИ, рддреЛ рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╣реА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡реАрдХреГрдд рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╡рд╣рд╛рдБ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдирд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рдХреЛ рдЦрдбрд╝рд╛ рд╣реЛрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЕрдиреБрдореЛрджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реАрдЖрдИ рдмрд┐рд▓реНрдб рдХреЗ рдмрд╛рдж рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдЧрд╛ рдХрд┐ рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝рддрд╛ рдирд╣реАрдВ рд╣реИред рдФрд░ pipenv check рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд╛ рдореБрджреНрджреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ (рдЕрд░реНрдз) рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЙрджреНрдпрдо рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рдЬреНрдЮрд╛рди рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИред

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

рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╢реЛрдзрди рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдЪрд░реНрдЪрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

рд╣рдорд╛рд░реЗ рдЖрдВрддрд░рд┐рдХ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп, рд╣рдорд╛рд░реЗ рдЖрдВрддрд░рд┐рдХ рдкреАрдкреАрдЖрдИ, рдЖрджрд┐ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдореЗрд░реЗ рдЕрдкрдиреЗ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ (рдЙрджрд╛: cfgtree , txrwlock , pipenv-to-requirements ) рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рдЬреЛ рдЗрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рд╕рд╛рд░рдЧрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдЬрдЧрд░ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ: PBRред
PBR рдореВрд▓ рд░реВрдк рд╕реЗ рдкрдврд╝рддрд╛ рд╣реИ requirements.txt рдореЗрдВ рдПрдХ рд╡рд┐рддрд░рдг рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдФрд░ рдЗрд╕рдХреА рд╕реБрдИ рдкрд╛рдпрд╛ install_requires рдХреЗ setup.py ред рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдХреЗрд╡рд▓ requirements.txt рдХреЛ рдвреАрд▓реА рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрдм рддрдХ Pipfile рдХрд╛ рд╕рдорд░реНрдерди рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ PBR рдХреЗ рдЕрдВрджрд░ рдПрдХреАрдХреГрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛, рддрдм рддрдХ рдореБрдЭреЗ pipenv-to-requirements рдХрд╛ рдЙрдкрдпреЛрдЧ requirements.txt рд╕реЗ Pipfile requirements.txt рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рджреЛрдиреЛрдВ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реЛрдВ рдФрд░ рджреЛрдиреЛрдВ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдВ рд╕реНрд░реЛрдд рдореЗрдВ, рдФрд░ рд╡рд┐рддрд░рдг рдкреИрдХреЗрдЬ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдкреАрдмреАрдЖрд░ рдЗрдВрдЬреЗрдХреНрд╢рди рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ pipenv рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ requirements.txt

рдореИрдВ рдПрдХ рдкрд░ рдХрд╛рдо Pipfile рдХреЗ рд╕рдорд░реНрдерди PBR рдХреЗ рд▓рд┐рдП, рдЗрддрдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рд╣реЛ рдЬрд╛рдПрдЧрд╛ Pipfile рдЗрд╕рдХреА рд╕реБрдИ рдореЗрдВ (рдФрд░ рдирд╣реАрдВ рддрд╛рд▓рд╛ рдлрд╝рд╛рдЗрд▓) рдФрд░ install_requires рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИ requirements.txt ред

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЕрдиреНрдп рд╕рдорд╛рди рдкреИрдХреЗрдЬ рдореМрдЬреВрдж рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рднреА рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЧрд┐рдЯ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг, рд▓реЗрдЦрдХреЛрдВ рдХреА рдСрдЯреЛ рдкреАрдврд╝реА рдФрд░ рдЪрд╛рдВрдЧрд▓реЙрдЧ)ред

рд▓реЗрдХрд┐рди рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд┐рдЦрдирд╛, рдмрдирд╛рдП рд░рдЦрдирд╛ рдФрд░ рд╕рдВрднрд╛рд▓рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдореБрдЭреЗ рдЗрд╕ рдЕрдиреБрднрд╡ рдХреЛ рд╕рд╛рдЭрд╛ рди рдХрд░рдиреЗ рдХрд╛ рджреБрдЦ рд╣реЛрдЧрд╛ред рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреА рдХрдВрдкрдиреА рдкрд░ рдЖрдзреБрдирд┐рдХ рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрдиреЗ рдХреЗ "рдЕрдиреБрд╢рдВрд╕рд┐рдд" рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдЪрд╛рд░рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

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

рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рд░реАрдбрдереЗрдбреЙрдХреНрд╕ рдпрд╛ рдкреАрдпреВрдк рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рд╣реИ (рднрд▓реЗ рд╣реА рдкреАрдпреВрдкреА рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд▓рд┐рдВрдХ рд╣реЛрдиреЗ рдкрд░ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реЛ)ред

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

рдЯреАрдо, рдЖрдк рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдкрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ "рд╕рдореБрджрд╛рдп" рдЕрдиреБрднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ? рддрд╛рдХрд┐ рдореЗрд░реЗ рдЬреИрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рд╡рд╣ рдкрд┐рдкреЗрдирд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдкрд┐рдкреЗрдирд╡ рдЯреАрдо рдХреЗ рдкреВрд░реНрдг рд╕рдорд░реНрдерди рдХреЗ?

рдкреБрдирд╢реНрдЪ: рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕реВрддреНрд░ рдХреЛ рджреВрд╖рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ рдЗрд╕реЗ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдореБрджреНрджреЗ рдкрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ

@vlcinsky (1) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ - рдЕрдкрдиреА рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рдЕрдкрдиреЗ рд░реЗрдкреЛ рдореЗрдВ рд░рдЦреЗрдВред

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

рдпрд╛ рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдорд╛рдзрд╛рди рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реАрдЖрдИ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдХреМрди рд╕реА рдЕрддрд┐рд░рд┐рдХреНрдд рдЧрд╛рд░рдВрдЯреА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@gsemet рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХреНрдпрд╛? рдкрд┐рдЫрд▓реЗ рджреЛ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдореЗрд░реЗ рд╕рднреА рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ pbr рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ - рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдФрд░ рдЬрдм рднреА рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдореИрдВ рдкреАрдмреАрдЖрд░ рдореЗрдВ рдкрд┐рдкрдлрд╛рдЗрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рдЖрдкрдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ (рдХреБрдЫ рдЕрдВрдЧреВрдареЗ рдКрдкрд░, рд╡реЛрдЯ рдЗрддреНрдпрд╛рджрд┐)ред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ ( pipenv рдкреИрдЯрд░реНрди рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдВрдЯреАрдкреИрдЯрд░реНрди рдХреА рдЦреЛрдЬ) рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ pbr рдЫреЛрдбрд╝рд╛:

  • рдпрд╣ рд╡реИрдЪрд╛рд░рд┐рдХ рдЪрд░реНрдЪрд╛ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдмрдирд╛ рджреЗрдЧрд╛
  • рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдиреНрдп рдХрд╛рд░рдгреЛрдВ рд╕реЗ pbr рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ (рдЖрдкрдиреЗ рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ) рдФрд░ рдпрд╣ рд╢рд╛рдпрдж рдЪрд░реНрдЪрд╛ рдХреЛ рджреВрд░ рдХрд░ рджреЗрдЧрд╛

рджреВрд╕рд░реА рдУрд░, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреАрдмреАрдЖрд░-рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреА рдПрдХ рд░реЗрд╕рд┐рдкреА рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред рдореБрдЭреЗ рдЗрд╕реЗ рдкрдврд╝рдирд╛ рд╣реИред

@ tsiq-oliverc рдЖрдкрдиреЗ рдирд╛рдЦреВрди рдорд╛рд░рд╛: рдЕрдкрдирд╛ рд▓реЙрдХрдлрд╛рдЗрд▓

рдпрд╣реА рд╡рд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдорд┐рд▓реЗрдЧрд╛, рдЬрд╣рд╛рдВ Pipfile.lock рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЖрдкрдХреЗ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдЯреВрдЯ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╛ рддреЛ рдмрд┐рд▓реНрдб рд░рди рдХреЛ рддреЛрдбрд╝рдирд╛ рдпрд╛ рдореБрджреНрджреЛрдВ рдХреЛ рдЫреБрдкрд╛рдирд╛, рдЬреЛ рдЕрдиреНрдпрдерд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рдЧрд▓рдд рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рджрд┐рдП рдЧрдП рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП ...)

рдпрджрд┐ рдЖрдк рдореБрдЭреЗ рдПрдХ рд░реЗрдкреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдпрд╣ рдареАрдХ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп), рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреАред рдпрд╛ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЬреЛрдЦрд┐рдо рд╣реИрдВ рдпрд╛ рдХреНрдпрд╛ рдЪреАрдЬреЗрдВ рдЕрдзреВрд░реА рд╣реИрдВред

рдардВрдбрд╛ ! рдореИрдВ рдЗрд╕ рдХреБрдХреАрдХрдЯрд░ рдХреЛ рднреА рдмрдирд╛рдП рд░рдЦрддрд╛

@vlcinsky рдареАрдХ рд╣реИ, рддреЛ рдЪрд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЖрдкрдХреА рдореВрд▓ рдкреЛрд╕реНрдЯ рдореЗрдВ рдпреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓рдХреНрд╖рдг рд╣реИрдВ:

  • рдЯреВрдЯреА рд╣реБрдИ setup.py рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЫрд┐рдкрд╛рдирд╛ред рдпрд╣ рдПрдХ рдЧреИрд░-рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ - pipenv install -e . , рд╣реИ рдирд╛?
  • рд╡рд┐рднрд┐рдиреНрди рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдУрдПрд╕ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдЕрдорд╛рдиреНрдп рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдореБрджреНрджрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдЖрдк рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХрд╣рд╛рдВ рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ? (рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ)
  • рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ... рдЬрдм рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрджреНрдпрддрди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рднреАрддрд░ рдкреНрд░рдпреЛрдЧ рдпреЛрдЧреНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП n рдХреЗ рдмрдЬрд╛рдп рд╕рдВрд╕реНрдХрд░рдг n+1 рдХреЗ рд╡рд┐рд░реБрджреНрдз рдХрд╛рдо рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рджреЛрдиреЛрдВ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
  • Tox рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Tox рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ред рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рджреЛ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдкрджрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдиреБрд╕реНрдЦрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЬреЛ рднреА рд╢реНрд░реЗрд╖реНрда рд╣реИ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рдкрд┐рдкреЗрдирд╡ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдФрд░ рдЧреИрд░-рдореБрджреНрджреЗ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ - рдЖрдк рдХреЗрд╡рд▓ рдкрд┐рдкреЗрдирд╡ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрд┐рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬреИрд╕реЗ рдореИрдВ рдЕрдкрдиреА рдбреЙрдХрд░ рдЫрд╡рд┐, рдкрд┐рдк рдХрд╛ рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рдЗрддреНрдпрд╛рджрд┐) рдкрд┐рди рдХрд░рддрд╛ рд╣реВрдВред

@ tsiq-oliverc рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реИ, рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдиреЗ рдореБрдЭреЗ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛ред

рджреЛрд╣рд░рд╛рд╡ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдХрдлрд╛рдЗрд▓ ( Pipfile.lock ) рдХреЛ рд░реЗрдкреЛ рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ:

рдЯреВрдЯреА рд╣реБрдИ setup.py рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ pipenv install -e . рдЬреЛ рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдЙрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдзреНрдпрд╛рди рджреЗрдВ, рдпрд╣ Pipfile.lock рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЗрд╕реЗ рдмрдирд╛рдиреЗ (рдкреБрдирдГ) рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИред рдЕрдЧрд░ рдХреЛрдИ Pipenv.lock рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдкреИрдХреЗрдЬ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рдорд╕реНрдпрд╛ рдореМрдЬреВрдж рд╣реИред

рд╡рд┐рднрд┐рдиреНрди рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдУрдПрд╕ рдореЗрдВ рдкреБрдирдГ doit рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдирдпрд╛ рдкрд╛рдпрдерди 2.x рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред watchdog рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдирд┐рд░реНрднрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ: рд▓рд┐рдирдХреНрд╕ рдкрд░ рдЗрдиреЛрдЯрд┐рдлрд╛рдИ, рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдХреБрдЫ рдФрд░, рдУрдПрд╕рдПрдХреНрд╕ рдкрд░ рдХреБрдЫ рдФрд░ред рдореЗрд░реЗ рдкреВрд░реНрд╡ рдЧреНрд░рд╛рд╣рдХ рдХрд╣рддреЗ рдереЗ "рдпрд╣ рдХрднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛" рдФрд░ 50% рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ 2 рд╕рдкреНрддрд╛рд╣ рдХреЗ рднреАрддрд░ рд╣реБрдЖред рд╕реАрдЖрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрднреНрдпрд╛рд╕ рдирд╣реАрдВ рд╣реИред

рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ .. 15 рдпреЛрдЧрджрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдУрдкрди рд╕реЛрд░реНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рдПрдХ рдирд╡рд╛рдЧрдВрддреБрдХ рдпрд╛ рдердХреЗ рд╣реБрдП рдХреЛрд░ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ Pipfile.lock рдХреЛ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдирд╛ рднреВрд▓рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП maya рдкреИрдХреЗрдЬ рдореИрдВ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ Pipfile.lock рдХреЗ рд░реВрдк рдореЗрдВ рдирдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ setup.py ред рдХреНрдпрд╛ рдпрд╣ рдЬрд░реВрд░реА рдерд╛? рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛? рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╕рднреА рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдерд╛? рдЙрддреНрддрд░ рд╣реИрдВ рдирд╣реАрдВ, рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ, рдирд╣реАрдВред рд╡реИрд╕реЗ рднреА, рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж (рдЗрд╕рдиреЗ рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЖрдЧреЗ рд╡рд░реНрдгрд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛)ред

рдЯреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдЯреЙрдХреНрд╕ рдХрдИ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡реНрд╕ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЙрдирдХреЗ рднреАрддрд░ рдЪрд▓ рд░рд╣реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╡рд┐рд╢рд┐рд╖реНрдЯ tox.ini рдЕрдЬрдЧрд░ 2.7, 3.4, 3.5, 3.6 рдФрд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЧрдВрднреАрд░ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХрд╛ рдкрд╛рд╡рд░рдЯреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред pipenv рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рдЖрдкрдХреА рд╕рд▓рд╛рд╣ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдФрд░ рдЬрд╣рд╛рдБ рд╕рдВрднрд╡ рд╣реЛ pipenv рд╕реЗ рдЕрдзрд┐рдХ рдмреЗрд╣рддрд░ рдЯреВрд▓ (рдЯреЙрдХреНрд╕) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд░рдЦрд╛ред

рдкреБрди: рдкрд┐рдкреЗрдирд╡ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рдХрдИ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг (рдЯреЙрдХреНрд╕ рдЖрдзрд╛рд░рд┐рдд) рдерд╛ рдЬреЛ рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдЯреНрд░реИрд╡рд┐рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ pipenv рдореБрджреНрджреЗ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдпрд╛ред рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдЕрднреА рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рддреЛ рдлрд┐рдХреНрд╕ рдЬрд╛рд░реА рд╣реЛрдиреЗ рддрдХ рдкрд┐рдирд┐рдВрдЧ рдорджрдж рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдРрд╕реЗ рд╣реА рдЪрд▓рддрд╛ рд╣реИ - рдореИрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░реВрдВрдЧрд╛ред

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

@ tsiq-oliverc рдЬрдмрдХрд┐ рдореБрдЭреЗ рд╢реБрд░реВ рдореЗрдВ "рдЬреНрдЮрд╛рдд рдЕрдЪреНрдЫреЗ" рдФрд░ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рджреЛрдиреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рдкрд╕рдВрдж рдЖрдпрд╛, рдореБрдЭреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ, рдкреНрд░рдпрд╛рд╕ рдХреЛ рдЙрдЪрд┐рдд рдард╣рд░рд╛рдирд╛ рдХрдард┐рди рдФрд░ рдХрдард┐рди рд▓рдЧрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рджреЛрдиреЛрдВ рдХреЛред

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

@vlcinsky рдЬрдмрдХрд┐ рдореИрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдмреАрдЪ рдорддрднреЗрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдмрд┐рдВрджреБ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, "рдкреНрд░рддрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдПрдХ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓" рддрд░реНрдХ рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рд╕реНрдЯреНрд░реЙ рдореИрди рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЖрдк рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдкрд░рд┐рд╡реЗрд╢реЛрдВ рдХреЗ рдмреАрдЪ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

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

@ рдореЛрд░рд┐рддреНрдЬрд╝90

рд╕реНрдЯреНрд░реЙрдореИрди рд╕реЗ рдорд┐рд▓рдирд╛

Pipfile.lock рд╕реНрдЯреНрд░реЙ рдореИрди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡реЗрд░рд┐рдПрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ (рджреВрд╕рд░реЛрдВ рдХреЛ рдЕрдкрдиреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рджреВрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП):

рдлреНрд▓рд╛рд╕реНрдХ

рдореИрдВрдиреЗ flask рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓рд┐рдпрд╛ (рдЗрд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдкрдХреНрд╡ рдорд╛рдирддреЗ рд╣реБрдП) рдФрд░ рдЯреЙрдХреНрд╕ рдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдП:

рдпрд╣рд╛рдВ рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╡реЗрд░рд┐рдПрдВрдЯ рдХреА рд╕реВрдЪреА рджреЗрдЦрддреЗ рд╣реИрдВ (рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдкрд░, рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ 3 рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ рдФрд░ рдУрдПрд╕рдПрдХреНрд╕ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╣реА рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдПрдХ рдУрдПрд╕ рдкрд░ 16 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯреЗрд╕реНрдЯ рд░рди рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ 5 рд╡рд┐рдлрд▓ рд╣реЛ рдЧрдП рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ (рдпрд╣ рдареАрдХ рд╣реИ), рдПрдХ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдбреЙрдХ рд╕реЗ рдирд┐рдкрдЯ рд░рд╣рд╛ рд╣реИ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдореНрдкреЛрд░реНрдЯреЗрдмрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) рдФрд░ рджреВрд╕рд░рд╛ рдПрдХ рдХрд╡рд░реЗрдЬ (рдЬрд┐рд╕реЗ рдЗрдореНрдкреЛрд░реНрдЯреЗрдмрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) ):

  coverage-report: commands succeeded
  docs-html: commands succeeded
  py27-devel: commands succeeded
  py27-lowest: commands succeeded
  py27-simplejson: commands succeeded
  py27: commands succeeded
  py35: commands succeeded
  py36-devel: commands succeeded
  py36-lowest: commands succeeded
  py36-simplejson: commands succeeded
  py36: commands succeeded
ERROR:   py34: InterpreterNotFound: python3.4
ERROR:   pypy-devel: InterpreterNotFound: pypy
ERROR:   pypy-lowest: InterpreterNotFound: pypy
ERROR:   pypy-simplejson: InterpreterNotFound: pypy
ERROR:   pypy: InterpreterNotFound: pypy

рдмрдирд╛рдП рдЧрдП рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ requirements.txt рдлрд╝рд╛рдЗрд▓ pip freeze > {venv_name}.txt рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рд╣реИ

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

b231a4cc8f30e3fd1ca0bfb0397c4918f5ab5ec3e56575c15920809705eb815e  py35.txt
b231a4cc8f30e3fd1ca0bfb0397c4918f5ab5ec3e56575c15920809705eb815e  py36.txt
cdf69aa2a87ffd0291ea65265a7714cc8c417805d613701af7b22c8ff2b5c0e4  py27-devel.txt
dfe27df6451f10a825f4a82dfe5bd58bd91c7e515240e1b102ffe46b4c358cdf  py36-simplejson.txt
e48cd24ea944fc9d8472d989ef0094bf42eb55cc28d7b59ee00ddcbee66ea69f  py36-lowest.txt
f8c745d16a20390873d146ccb50cf5689deb01aad6d157b77be203b407e6195d  py36-devel.txt
053e107ac856bc8845a1c8095aff6737dfb5d7718b081432f7a67f2125dc87ef  docs-html.txt
45b90aa0885182b883b16cb61091f754b2d889036c94eae0f49953aa6435ece5  py27-simplejson.txt
48bd0f6e66a6374a56b9c306e1c14217d224f9d42490328076993ebf490d61b5  coverage-report.txt
564580dad87c793c207a7cc6692554133e21a65fd4dd6fc964e5f819f9ab249c  py27.txt
8b8ff4633af0897652630903ba7155feee543a823e09ced63a14959b653a7340  py27-lowest.txt

рдПрдХ рдбрд░рд╛рд╡рдирд╛, рд╣реИ рдирд╛? рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рд╕реЗ, рдХреЗрд╡рд▓ рджреЛ рд╕рдорд╛рди рдЬрдореЗ рд╣реБрдП рдирд┐рд░реНрднрд░рддрд╛ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред

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

рдЬрд┐рдВрдЬрд╛2

jinja2 рдЬрд╛рдБрдЪ рдХрд░рдирд╛, рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╕рд░рд▓ рдЬрд╛рдирд╡рд░ рд▓рдЧрддрд╛ рд╣реИ:

  coverage-report: commands succeeded
  py26: commands succeeded
  py27: commands succeeded
  py33: commands succeeded
  py35: commands succeeded
  py36: commands succeeded
ERROR:   docs-html: commands failed
ERROR:   py34: InterpreterNotFound: python3.4
ERROR:   pypy: InterpreterNotFound: pypy

рдЪреЗрдХрд╕рдо рджреЗрдЦрдХрд░ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ py27.txt рдФрд░ py26.txt рднрд┐рдиреНрди рд╣реИрдВ:

047a880804009107999888a3198f319e5bbba2fa461b74cfdfdc81384499864e  py26.txt
047a880804009107999888a3198f319e5bbba2fa461b74cfdfdc81384499864e  py33.txt
047a880804009107999888a3198f319e5bbba2fa461b74cfdfdc81384499864e  py35.txt
047a880804009107999888a3198f319e5bbba2fa461b74cfdfdc81384499864e  py36.txt
48bd0f6e66a6374a56b9c306e1c14217d224f9d42490328076993ebf490d61b5  coverage-report.txt
743ad9e4b59d19e97284e9a5be7839e39e5c46f0b9653c39ef8ca89c7b0bc417  py27.txt

@vlcinsky рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбрд░рд╛рд╡рдирд╛ рд╣реИред рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдлреНрд▓рд╛рд╕реНрдХ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдпрд╛ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрджрд░реНрд╢ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдиреЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдЧрд▓рдд рд╕рд╛рдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдореИрдВ рдЕрдм рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реА рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд┐рд╕реА рджрд┐рди рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЧреНрд░рд╕реНрдд рдирд╣реАрдВ рд╣реЛрдЧреА рдФрд░ рд╡рд╣рд╛рдВ рдорддрднреЗрдж рдЕрдзрд┐рдХ рдкреНрд░рдмрдВрдзрдиреАрдп рд╣реЛрдВрдЧреЗред

@ Moritz90 рдЖрдкрдХреА рдЖрдВрддрд░рд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рджрд░реНрд╢рдХреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд░рд╣реА рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдХреАрд░реНрдг рд░рдЦ рд╕рдХреЗрдВред

рд╕рд╛рдорд╛рдиреНрдп рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрдХреНрд╕рд░ рд▓рдЪреАрд▓реЗ рдФрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдпреЛрдЧреНрдп рд╣реЛрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдлреНрд▓рд╛рд╕реНрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЬреЛрдВрд╕ рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рд░рди рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдлреНрд▓рд╛рд╕реНрдХ рдХреЗ tox.ini рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЯреЙрдХреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреЗ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдХрдо рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдзреНрдпрд╛рди рд░рдЦрддреЗ рд╣реИрдВред

рдбреЗрд╡реЗрд▓ рдХреЛрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реИред

рдореИрдВ рдХрд╣реВрдВрдЧрд╛, рдлреНрд▓рд╛рд╕реНрдХ рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рд╣реИ рдФрд░ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдкрд┐рд░рд╛рдорд┐рдб рдХрд╛ tox.ini рд╕рдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд╛рддрд╛рд╡рд░рдг рджрд┐рдЦрд╛рддрд╛ рд╣реИ (рдЙрдирдХрд╛ рд▓рдХреНрд╖реНрдп 100% рдХреЛрдб рдХрд╡рд░реЗрдЬ рднреА рд╣реИ)ред

рдорд╛рдпрд╛ рдХрд╛ tox.ini рдмрд╣реБрдд рддрд╛рдЬрд╝рд╛ (2 рджрд┐рди) рдФрд░ рд╕рд░рд▓ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпрд╣рд╛рдВ 4 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИрдВ рдФрд░ py27 py35 рдФрд░ py36 рд╕реЗ рдЬрдореА рд╣реБрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рднрд┐рдиреНрди рд╣реИред

@ рдореЛрд░рд┐рддреНрдЬрд╝90
рдкрд┐рдкреЗрдирд╡ рдФрд░ рдЯреЙрдХреНрд╕ рдХреЗ рдмреАрдЪ рдЧреЛрдВрдж рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ

  • pipenv --man рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, pipenv рднреАрддрд░ tox.ini рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ
  • tox-pipenv рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдХреАрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рд╕рдордп рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИред

tox.ini рдлрд╝рд╛рдЗрд▓ рдордирдорд╛рдиреА рдХрдорд╛рдВрдб рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ pipenv ред

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

рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рд╕рдВрднрд╡рддрдГ Pipfile.lock рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрдЪрд┐рдд рд╕реНрдерд╛рди рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рдУрд╡рд░рд░рд╛рдЗрдЯрд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП .tox/py36/Pipfile.lock ред рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рд╕рд░рд▓реАрдХрд░рдг рд╕реНрд╡рд╛рдЧрдд рд╣реЛрдЧрд╛ред рд╢рд╛рдпрдж Pipfile рд╕реНрдерд╛рди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЪрд╛рд▓ рдЗрд╕реЗ рдФрд░ рднреА рдЖрд╕рд╛рди рдмрдирд╛ рджреЗрдЧреАред

@vlcinsky

  • setup.py - рдЕрднреА рднреА рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВред рдЖрдк рдПрдХ рдмрд╛рд░ pipenv install -e . рдЪрд▓рд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ setup.py рдХреЛ рдЕрдм рдЖрдкрдХреА рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдФрд░ рдлрд┐рд░ рдЬрдм рднреА рдЖрдк setup.py рдореЗрдВ рдирдП рдкреИрдХреЗрдЬ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ pipenv install рдЪрд▓рд╛рдПрдВред
  • рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рднреВрд▓ рд░рд╣реЗ рд╣реИрдВ - pipenv --deploy рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕реАрдЖрдИ рдореЗрдВ рдЪрд▓рд╛рдПрдВ!
  • рдкрд┐рдкреЗрдирд╡ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ - рд╕рд╣рдордд рд╣реИ, рдЕрдЧрд░ рдЙрдкрдХрд░рдг рдореЗрдВ рдмрдЧ рд╣реИрдВ, рддреЛ рд╡рд╣ рдмреЗрдХрд╛рд░ рд╣реИред рд▓реЗрдХрд┐рди рдмрдЧ рдЖрдорддреМрд░ рдкрд░ рдареАрдХ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдкреВрд░реЗ рджрд░реНрд╢рди рдХреЛ рдлреЗрдВрдХрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ
  • рдЯреЙрдХреНрд╕

    • рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП Tox рдЕрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдкреИрдХреЗрдЬ рдФрд░ рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рднреА рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рддреЛ рдпрд╣ рдФрд░ рднреА рдмреЗрд╣рддрд░ рд╣реИред

    • рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рд╕рдЪ рд╣реЛрддрд╛, рддреЛ рдкрд┐рдкреЗрдирд╡ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рдЖрдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛрддрд╛ред рддреЛ рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдорд╛рди рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ Tox рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реАрдорд╛ рд╣реИред

    • рдКрдкрд░ рдХреА рддрд░рд╣, рдЖрдЬ рджреБрдирд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ (рдЕрдЪреНрдЫреЗ рдЗрдВрдЯрд░рдСрдк рдХреА рдХрдореА) рджрд░реНрд╢рди рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдХреА рддрд░рд╣ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИред

  • рдПрдХрд╛рдзрд┐рдХ envs

    • рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдлреНрд▓рд╛рд╕реНрдХред

    • рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдмреЗрд╣рддрд░ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХрд╛рдзрд┐рдХ рд▓реЙрдХрдлрд╛рдЗрд▓ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╢рд╛рдпрдж рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдкрд┐рдкреЗрдирд╡ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреА рд╕реБрд╡рд┐рдзрд╛ рд╣реИ?)

    • рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА, рдореИрдВ рдЕрднреА рднреА рдЖрд╢реНрд╡рд╕реНрдд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рдХрдИ рд▓реЙрдХрдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ update-all-lockfiles.sh рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ CI рдкрд░ pipenv --deploy рд╕рдХрддреЗ рд╣реИрдВред


@ Moritz90 - рд╕рд╣рдордд, рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ "рджреЛ рдЪрд░рдг" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд▓реЙрдХрдлрд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рдирдмреВрдЭрдХрд░/рдЬрд╛рдирдмреВрдЭрдХрд░ "рдореИрдиреБрдЕрд▓" рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИред


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

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

рдпрджрд┐ Pipenv/Pipfile lib-dependencies , app-dependencies рдФрд░ dev-dependencies рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рддреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЙрджрд╛рд╣рд░рдг @vlcinsky рд╕рд░рд▓ рдФрд░ рдХрдо рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдбреЙрдХреНрд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдпрджрд┐ рдЖрдк рдкреИрдХреЗрдЬ рдПрдХ рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рддреЛ lib-dependencies рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг Pipfile :

[lib-dependencies]
some-lib=="*"
another-lib=="*"
yet-another-one==">=1.0"

[dev-dependencies]
some-dev-tool=="1.1"

рд╕рд╛рдЭрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЛ [lib-dependencies] рддрд╣рдд рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЪреМрдбрд╝рд╛ рд░рдЦрд╛ рдЬрд╛рдП, рддрд╛рдХрд┐ рдЙрдкрднреЛрдХреНрддрд╛ рдкреНрд░рдгрд╛рд▓реА рдкрд░ рд╕рдВрд╕реНрдХрд░рдг рд╡рд┐рд░реЛрдзреЛрдВ рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрджрд┐ рдЖрдкрдХрд╛ рдкреИрдХреЗрдЬ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИ (рд▓рдХреНрд╖рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдкрд░ pipenv рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ) рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ [app-dependencies] рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг Pipfile :

[app-dependencies]
some-lib=="1.0.12"
another-lib=="1.*"
yet-another-one=="2.0"

[dev-dependencies]
some-dev-tool=="1.1"

/ рдЕрдВрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЙрджрд╛рд╣рд░рдг

рдПрдХ рдЕрдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг Pipfile.lib рдФрд░ рдПрдХ Pipfile.app ред

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

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмрд╣реБрдд рднреНрд░рдо рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЬреЛ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ (рдЬреИрд╕реЗ JS, Rust, Elm) рдореЗрдВ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдореИрдВ Pipenv рдФрд░ setup.py рдХрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддрдм рддрдХ рдореБрдЭреЗ рдХрдИ рдорд╣реАрдиреЗ рдФрд░ рдХрднреА-рдХрднреА GITHub рдореБрджреНрджреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рд▓рдЧ рдЧрдПред

@ рдлреЗрд▓рдХреНрд╕

рдЖрдкрдХрд╛ [lib-dependencies] рдпрд╛ Pipfile.lib рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Pipfile (рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ - рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЪреМрдбрд╝рд╛)ред

рдЖрдкрдХрд╛ [app-dependencies] рдпрд╛ Pipfile.app рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ Pipfile.lock (рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ) рдореЗрдВ рд╣реИред

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдмрд╣реБрдд рднреНрд░рдо рд╣реЛрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЬреЛ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ (рдЬреИрд╕реЗ JS, Rust, Elm) рдореЗрдВ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЬрдм рддрдХ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рдирд╣реАрдВ рд╣реБрдЖ рдХрд┐ рдореИрдВ Pipenv рдФрд░ setup.py рдХрд╛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рддрдм рддрдХ рдореБрдЭреЗ рдХрдИ рдорд╣реАрдиреЗ рдФрд░ рдХрднреА-рдХрднреА GITHub рдореБрджреНрджреЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рд▓рдЧ рдЧрдПред

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

рдЦреБрдж рдПрдХ рдкрд╛рдпрдерди рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗ рдЖрддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ Node's package.json рдЗрд╕реЗ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реИ (рдЬрдВрдЧ рдмреЗрд╣рддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рд▓рд┐рдВрдХрд░ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдмрд╛рдж рдХреЗ рдЪрд░рдг рдореЗрдВ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ)ред рдРрдк рдФрд░ lib рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдЗрд▓рд╛рдЬ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдкрд╛рдЗрдерди рдЬреИрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЕрдореВрд░реНрдд рдЕрд░реНрде рдореЗрдВ-рдпрд╛рдиреА рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд┐рдкреЗрдирд╡ рдЬреИрд╕рд╛ рд╕рд╛рдорд╛рдиреНрдп рдЯреВрд▓ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рд╕рд╛рдорд╛рдиреНрдпред

рдЬрдмрдХрд┐ рдореБрдЭреЗ рдЕрд╡рдзрд╛рд░рдгрд╛ рдореЗрдВ рддреАрди-рдЦрдВрдб рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рд╣реИ, рдпрд╣ рдЕрднреА рднреА рдореМрдЬреВрджрд╛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдореЗрдВ рдПрдХ рдЕрд╕рдВрдЧрдд рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдЗрд╕ рд╕реНрдерд╛рди рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА setup.py, setup.cfg, рдФрд░ (рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ) pyproject.toml рдореМрдЬреВрдж рд╣реИрдВред рдпрджрд┐ рдкрд┐рдкреЗрдирд╡ (рдкрд┐рдкрдлрд╛рдЗрд▓, рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП) рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкрд╛рдЗрдк (рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рдорд░реНрдерди рдХреЛ рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рд╕реАрдзреЗ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдФрд░ рдлрд╝реНрд▓рд┐рдЯ ред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ lib/app рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ pypa-dev (рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА) рдФрд░/рдпрд╛ рдкреАрдИрдкреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдкрд┐рдкреЗрдирд╡ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреНрдп рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕реБрдирд╛ рдЬрд╛ рд╕рдХреЗред (рдкрд┐рдкрдлрд╛рдЗрд▓) рдХрд┐рд╕реА рднреА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@vlcinsky

рдЖрдкрдХреА [lib-рдирд┐рд░реНрднрд░рддрд╛] рдпрд╛ Pipfile.lib рд╡рд╣ рд╣реИ рдЬреЛ рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд┐рдкрдлрд╛рдЗрд▓ рдореЗрдВ рд╣реИ (рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ - рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЪреМрдбрд╝рд╛)ред

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ред рдореЗрд░рд╛ lib-dependencies рд╡рд╣реА рд╣реИ рдЬреЛ рд▓реЛрдЧ рд╡рд░реНрддрдорд╛рди рдореЗрдВ setup.py / install_requires рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╢рд╛рдпрдж pypi-dependencies рдореЗрд░реЗ рдорддрд▓рдм рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рдирд╛рдо рд╣реЛрдЧрд╛ред

@uranusjr

рдЗрд╕ рд╕реНрдерд╛рди рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА setup.py, setup.cfg, рдФрд░ (рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ) pyproject.toml рдореМрдЬреВрдж рд╣реИрдВред

рдкрд┐рдкреЗрдирд╡ (рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓) рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ setup.py ред рдмрд╕ setup.py рдХреЗ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рд╕реЗрдХреНрд╢рди рдХреЛ рдкрд┐рдкрдлрд╛рдЗрд▓ рдореЗрдВ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдХрдо рд╕реЗ рдХрдо рдореЗрд░реА рдХрд▓реНрдкрдирд╛ рдореЗрдВ :)

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ lib/app рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ pypa-dev (рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА) рдФрд░/рдпрд╛ рдкреАрдИрдкреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдкрд┐рдкреЗрдирд╡ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреНрдп рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕реБрдирд╛ рдЬрд╛ рд╕рдХреЗред (рдкрд┐рдкрдлрд╛рдЗрд▓) рдХрд┐рд╕реА рднреА рджрд┐рд╢рд╛ рдореЗрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдареАрдХ рд╣реИ, рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИ;) рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓рд┐рдЦреВрдВрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдкреВрд░реЗ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬрд┐рдВрдЧ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЦрд░рдЧреЛрд╢ рдХреЗ рдЫреЗрдж рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдВрднрд╡ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВред рдореМрдЬреВрджрд╛ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рднреАрддрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдирд╛ рдФрд░ рдлрд┐рд░ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

@uranusjr - рдореИрдВ "рд╕рдВрдХрд▓рд┐рдд" рдкреГрд╖реНрдарднреВрдорд┐ рд╕реЗ рдЖрдпрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ?

рдРрдк рдФрд░ lib рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдЗрд▓рд╛рдЬ рдЙрд╕реА рддрд░рд╣ рдкрд╛рдЗрдерди рдЬреИрд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛

@ tsiq-oliverc рдЪреВрдВрдХрд┐ рдРрдк рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрдкрдиреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкрд┐рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдкреБрд╕реНрддрдХрд╛рд▓рдп рднреА рдЙрдиреНрд╣реЗрдВ рдкрд┐рди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗ, рдпрджрд┐ рд╡реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рдорд╛рди рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рд╣реЛрдВрдЧреАред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЗрд░реЗ рдРрдк рдореЗрдВ рджреЛ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ A рдФрд░ B рд╣реИрдВ, рджреЛрдиреЛрдВ рд╣реА C рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИрдВ, рд▓реЗрдХрд┐рди A рдкрд┐рди v1, рдЬрдмрдХрд┐ B рдкрд┐рди v2ред рд╕рдВрдХрд▓рд┐рдд рднрд╛рд╖рд╛рдПрдБ рдЯреВрд▓рдЪреЗрди рдХреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдХрдИ рддрд░реАрдХреЛрдВ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд╕реНрдЯ рд▓рд┐рдВрдХрд┐рдВрдЧ рд╕рдордп рдХреЗ рджреМрд░рд╛рди рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИтАФрдЕрдВрддрд┐рдо рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЗрдВ C (v1 рдФрд░ v2) рдХреА рджреЛ рдкреНрд░рддрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреА, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕рд╛рде A рдФрд░ B рд▓рд┐рдВрдХ рд╣реЛрдВрдЧреЗред рд╕реА ++ рднреВрдорд┐ рдореЗрдВ рдЗрд╕реЗ рдЧрддрд┐рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛; рдкреНрд░рддреАрдХ рд▓реБрдХрдЕрдк рдмрд╛рдж рдореЗрдВ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд░рдирдЯрд╛рдЗрдо рдкрд░), рд▓реЗрдХрд┐рди рд╡рд┐рдЪрд╛рд░ рд╡рд╣реА рд╣реИ-рд╕рдВрдХрд▓рдХ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП (рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ), рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред

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

рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЯреВрд▓ рдореЗрдВ рдХреБрдЫ рдЪрддреБрд░ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ "рдЕрдирдкрд┐рди" рдХрд░рддрд╛ рд╣реИред рдмрдВрдбрд▓рд░ (рд░реВрдмреА рдХрд╛) рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЛрдЧреЛрдВ рдХреЛ рдордгрд┐ рдореЗрдВ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рди рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдХреЗ, рдЗрд╕рд▓рд┐рдП рдмрдВрдбрд▓рд░ Gemfile.lock рдореЗрдВ рдкрд┐рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп Gemfile рдореЗрдВ рдЕрдирдкрд┐рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд▓реЛрдЧ рд╕рд▓рд╛рд╣ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдЪрд╛рд╣реЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрднреА рднреА рд╣рд░ рдЬрдЧрд╣ рдкрд┐рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓рддреЗ рд╣реИрдВред

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

@ tsiq-oliverc рдкреАрдЯрд░ рд╣рд┐рдВрдЯрдЬреЗрдВрд╕ рдиреЗ рдХрд╣реАрдВ рди рдХрд╣реАрдВ "рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рд╛рдЧрдд рд╣реИ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд▓рд┐рдЦреА рд╣реИред

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

рдореИрдВрдиреЗ рдЖрдкрд╕реЗ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдорд╛рдВрдЧрд╛, рдЬрд╣рд╛рдВ pipenv рдареАрдХ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдЖрдкрдиреЗ рдХреЛрдИ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдЖрдк tox рдЧреБрдгреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЗрд╕рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдлрд┐рд░ рднреА рдкрд╛рдЗрдерди рдкреИрдХреЗрдЬ рд╡рд┐рдХрд╛рд╕ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рджреЛрд╣рд░рд╛ рд░рд╣реЗ рд╣реИрдВред

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

рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХрддрд░ 2 (+Windows) рдпрд╛ 3 (+OSX) рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╣реЛрдЧреАред

tox рдХрд╛ рдЙрдкрдпреЛрдЧ

рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдзрд┐рдХ рд╣реИ, рдлреНрд▓рд╛рд╕реНрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдмрд╕реЗ рдЬрдВрдЧрд▓реА рдирд╣реАрдВ рд╣реИред

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

рдмрд╕ Pipfile.lock рдХреЛ рдПрдХ рднрдВрдбрд╛рд░ рдореЗрдВ рдЫреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЛрдИ рдЬрд╛рджреВ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рд╣рд╛рдВ, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рджреГрд╢реНрдп рджрд┐рдЦрд╛рдПрдВ, рдЬрдм рдпрд╣ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛)ред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк "рд╕рдВрдХрд▓рд┐рдд" рджреБрдирд┐рдпрд╛ рд╕реЗ рд╕реБрдирд╣рд░рд╛ рдирд┐рдпрдо рдЬрд╛рдирддреЗ рд╣реЛрдВ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реЛрдВ рдХрд┐ рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж (рдпрд╛ рджреЛрд╣рд░рд╛рд╡) рднреА рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд░реВрд░реА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдкрд╛рдпрдерди рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд░рд╣рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕реБрдирд╣рд░рд╛ рдирд┐рдпрдо рдпрд╣рд╛рдВ рдЗрддрдиреА рд╕рдЦреНрддреА рд╕реЗ рд▓рд╛рдЧреВ рди рд╣реЛред

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА, рдЕрдЧрд░ рд╣рдореЗрдВ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП pipenv рдЙрдкрдпреЛрдЧ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдЧрд╛ред рдФрд░ рдореИрдВ рдЙрдкрдпреЛрдЧ рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬреЛ рд╕рдордЧреНрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдПрдЧрд╛ред

рдЙрд╕ рд▓рдХреНрд╖реНрдп рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рд╢реНрдиреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рд╣реИ:

  • рдХреНрдпрд╛ рдореИрдВ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛?
  • рдХреИрд╕реЗ?
  • рдХреНрдпреЛрдВ, рдореБрдЭреЗ рдХреНрдпрд╛ рдореВрд▓реНрдп рдорд┐рд▓рд╛?
  • рдХреНрдпрд╛ рдЗрд╕рдиреЗ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреЗрд╢ рдХреАрдВ? (рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп, рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЫрд┐рдкрд╛рдИ рдЬрд╛ рд░рд╣реА рд╣реИрдВ...)

@ рдлреЗрд▓рдХреНрд╕

рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдпрджрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ред рдореЗрд░реА lib-рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╡рд╣реА рд╣реИрдВ рдЬреЛ рд▓реЛрдЧ рд╡рд░реНрддрдорд╛рди рдореЗрдВ setup.py/install_requires рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдорддрд▓рдм рдХреЗ рд▓рд┐рдП pypi-рдирд┐рд░реНрднрд░рддрд╛ рдПрдХ рдмреЗрд╣рддрд░ рдирд╛рдо рд╣реЛрдЧрд╛ред

рдЗрд╕ рдЕрдВрдХ рдореЗрдВ pbr рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВред рдпрд╣ рдкрд┐рдкрдлрд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХрд┐ рдПрдХ Pipfile рдЙрдкрдпреЛрдЧ рджреЛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ (lib рдФрд░ рдРрдк) рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпреЗ рдЪреАрдЬреЗрдВ рдЕрд▓рдЧ рд╕реЗ рдХреА рдЬрд╛рдПрдВрдЧреАред рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рд╕рдордп рдореЗрдВ рдХрд╛рдлреА рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред

@vlcinsky рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдХрд╣рд╛рдБ рд▓реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреАрдЖрд░ рдорд╛рдВрдЧ рд░рд╣реЗ рд╣реИрдВ!), рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрднреА рдХреЗ рд▓рд┐рдП рдЗрд╕ рдмрд╛рддрдЪреАрдд рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВред

рдореЗрд░реА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЯреАрдПрд▓; рдбреАрдЖрд░ рдХреЛ рдкреБрди: рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:

  1. рдирд┐рдпрддрд╛рддреНрдордХ рдирд┐рд░реНрдорд╛рдг рдЕрддреНрдпрдзрд┐рдХ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИрдВ, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдХрд╣реАрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВ, рдФрд░ рдкрд┐рдкреЗрдирд╡ рдХреЗ рд╕рд╛рде рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред
  2. рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рдХреЛ рд╡рд╣рд╛рдВ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╛ рдмреЗрд╣рддрд░ рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред
  3. рдкрд┐рдкреЗрдирд╡ рдбреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП (1) рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрдВрдмрд▓ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдирд╛ рдЧреИрд░-рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ (2) рдорд╛рдорд▓реЛрдВ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рдмрд╕реЗрдЯ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

@uranusjr рд╕рдордЭ рдЧрдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рднрд╛рд╖рд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд╕рдореБрджрд╛рдпреЛрдВ рдиреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рдХреЗ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЕрдиреБрдорд╛рдиреЛрдВ рдкрд░ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рд╣реИ - рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдШрд░реНрд╖ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

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

@vlcinsky

рдЗрд╕ рдЕрдВрдХ рдореЗрдВ pbr рдЪрд░реНрдЪрд╛ рджреЗрдЦреЗрдВред рдпрд╣ рдкрд┐рдкрдлрд╛рдЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╣реИред

pbr рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рд╕рднреА, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рд╢реНрд░реЗрдгреА рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рдерд╛:

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

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕реЗ рдЙрдкрдХрд░рдг рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЖрдорддреМрд░ рдкрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рд╕рдордп рдореЗрдВ рдХрд╛рдлреА рдЕрд▓рдЧ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред

рдЬрдм рдкреАрдкреАрдЖрдИ рдкреИрдХреЗрдЬ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореИрдВрдиреЗ рджреЗрд╡-рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдкреЗрдирд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛, Pipfile рджреЗрд╡-рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, setup.py install_requires рдФрд░ setuptools рд╕рд╛рде lib рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред setup.py рдЪрд▓ рд░рд╣реЗ рдореЗрд░реЗ рдкреИрдХреЗрдЬ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pipenv run python setup.py bdist_wheel upload ред рдпрд╣реА рдореИрдВ рдЬрдЯрд┐рд▓ рдорд╛рдирддрд╛ рд╣реВрдВред

рдЕрдиреНрдп рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдореБрдЭреЗ рдПрдХ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЯреВрд▓ (рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░) рдФрд░ рдПрдХ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдлрд╛рдЗрд▓ рдлреЙрд░реНрдореЗрдЯ рд╕реАрдЦрдирд╛ рд╣реИред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реИ рдФрд░ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдПрдХ рдирд╡рд╛рдЧрдВрддреБрдХ рдХреЛ рдпрд╣ рд╕рдм рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рд╕реБрд▓рдЭрд╛ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ npm init , npm install foo --dev , npm publish ред рдкрд┐рдкреЗрдирд╡/рдкрд┐рдкрдлрд╛рдЗрд▓ рдЗрд╕рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рд╕рдм рдХреБрдЫ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред

рдореИрдВ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ "рд╕рдореБрджрд╛рдп" рдЕрдиреБрднрд╛рдЧ/рд╡рд┐рдХреА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХреЙрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВред рдХрдИ "рдкреИрдЯрд░реНрди" рд╡реИрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдореЗрдВ рд╕реЗ рдХреБрдЫ рдЗрд╕реЗ "рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛" рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ, рдХреБрдЫ рдореЗрд░реЗ рдЬреИрд╕реЗ рдкреАрдмреАрдЖрд░ рдХреЗ рд╕рд╛рде, рдФрд░ рдЕрдиреНрдп рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдкреИрдЯрд░реНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд┐рдкреЗрдирд╡ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЕрдВрджрд░ рдПрдХ рдкреГрд╖реНрда, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред

рдкреБрдирд╢реНрдЪ: рдирдП pypi рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реБрддрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рди рдХрд┐ python setup.py рдЕрдкрд▓реЛрдб рдХрд╛ред "рдЕрдкрд▓реЛрдб" рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдПрдВрдЯреАрдкреИрдЯрд░реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдкрд┐рдкреЗрдирд╡ "рдкреНрд░рдХрд╛рд╢рд┐рдд" рдХрдорд╛рдВрдб рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХреЗ?

@feluxe рдЖрдк рдХрд╡рд┐рддрд╛ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдореИрдВ рдмрд╕ рдЗрд╕рдХреЗ рдкрд╛рд░ рдареЛрдХрд░ рдЦрд╛рддрд╛ рд╣реВрдВ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдпрд╣реА рдЦреЛрдЬ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИ рдЬреЛ pipenv рдХрд░рддрд╛ рд╣реИ рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдмреЗрд╣рддрд░ рдХрд░рддреЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рд╡реЗ рдпрд╣реА рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ)ред рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрди, рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рд╕рднреА рдПрдХрд▓ рдЯреВрд▓ poetry рдкреНрд░рдХрд╛рд╢рди рдХрд░рддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХреНрдпрд╛ pipenv рдФрд░ poetry рдЕрдВрддрддрдГ рдкрд╛рдпрдерди рдХреЛ рдПрдХ рд╕рдЪреНрдЪрд╛ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

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

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

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

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

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдЙрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдирдИ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ рдерд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ, рдореИрдВ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ рдХрд┐ рдкреВрд░реЗ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬрд┐рдВрдЧ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдЦрд░рдЧреЛрд╢ рдХреЗ рдЫреЗрдж рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рдВрднрд╡ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВред рдореМрдЬреВрджрд╛ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рднреАрддрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдЕрднреНрдпрд╛рд╕ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдирд╛ рдФрд░ рдлрд┐рд░ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЪрд░реНрдЪрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

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

рд╡рд┐рд╖рдп рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ: рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ @uranusjr рдХреА рдкреЛрд╕реНрдЯ рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реБрдП:

рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЯреВрд▓ рдореЗрдВ рдХреБрдЫ рдЪрддреБрд░ рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ "рдЕрдирдкрд┐рди" рдХрд░рддрд╛ рд╣реИред рдмрдВрдбрд▓рд░ (рд░реВрдмреА рдХрд╛) рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЛрдЧреЛрдВ рдХреЛ рдордгрд┐ рдореЗрдВ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рди рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдХреЗ, рдЗрд╕рд▓рд┐рдП рдмрдВрдбрд▓рд░ Gemfile.lock рдореЗрдВ рдкрд┐рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмрдЬрд╛рдп Gemfile рдореЗрдВ рдЕрдирдкрд┐рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд▓реЛрдЧ рд╕рд▓рд╛рд╣ рдХреЛ рдирдЬрд╝рд░рдЕрдВрджрд╛рдЬрд╝ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЬреЛ рдЪрд╛рд╣реЗрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЕрднреА рднреА рд╣рд░ рдЬрдЧрд╣ рдкрд┐рди рдХрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдорд┐рд▓рддреЗ рд╣реИрдВред

рдореИрдВ рд╢рд╛рдпрдж рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдмрд╣реБрдд рдордЬрдмреВрдд рдерд╛ рдХрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдкрд┐рдЫрд▓реЗ рд╕рднреА рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд░рд╣реЗ рд╣реИрдВ

рдореИрдВ рдЕрднреА рднреА рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдЙрдирдХреЗ рд╕реАрдЖрдИ рдмрд┐рд▓реНрдб рдХреЗ рд▓рд┐рдП pipenv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди Pipfile.lock рдХреЛ рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦреЗрдВред рдЪреВрдВрдХрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдмрддрд╛рдпрд╛, pipenv рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдФрд░ рдореИрдВ рдпрд╣ рднреА рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЙрд╕реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рддрд░реНрдХ рдХреНрдпреЛрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЙрдирдХреА рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдареАрдХ рд╣реИ рдЕрдЧрд░ pipenv Pipfile рдХреЛ setup.py рд╕рд╛рде рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рд╣реИред

@vlcinsky

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХрд┐ рдПрдХ рдкрд┐рдкрдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ (lib рдФрд░ рдРрдк) рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпреЗ рдЪреАрдЬреЗрдВ рдЕрд▓рдЧ рд╕реЗ рдХреА рдЬрд╛рдПрдВрдЧреАред

рдореЗрд░реА рдЙрдкрд░реЛрдХреНрдд рдкреЛрд╕реНрдЯ рджреЗрдЦреЗрдВред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ? рдореИрдВ рдмрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдХреЛрдИ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред рдЕрднреА, Pipfile рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдлрд┐рд░ рдЖрдкрдХреЛ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЙрд╕реА рддрд░рд╣ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП Pipfile рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдкрд╣рд▓реЗ рд╣реА рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ Pipfile.lock рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЙрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рди рд╣реЛрдВ рдЬрд┐рд╕рдореЗрдВ рдореИрдВ рд╣реВрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ : рд╕рд╛рде рд╣реА, рдЕрдЧрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ pipenv рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рддреЛ рдЖрдк app-dependencies рдФрд░ lib-dependencies рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдЧреЛ рдХреЗ crate-type рдлрд╝реАрд▓реНрдб рдХреА рддрд░рд╣ рдХреБрдЫ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ lib-dependencies - рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИред

@ Moritz90 рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХреА рдХрдИ рдореЗрд▓рд┐рдВрдЧ рд╕реВрдЪрд┐рдпрд╛рдБ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реЛрдВрдЧреАред

рдкрд╛рдЗрдкрд╛-рджреЗрд╡ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рдЙрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдЪрд░реНрдЪрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИред рдЕрдЧрд░ рдореИрдВ рдЗрд╕реА рддрд░рд╣ рдХреА рдЪрд░реНрдЪрд╛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рддреЛ рд╢рд╛рдпрдж рдореИрдВ рдпрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ред

рдкрд╛рдпрдерди-рд╡рд┐рдЪрд╛рд░ рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЧрд╣ рд╣реИ, рдФрд░ рдкреВрд░реЗ рдкрд╛рдпрдерди рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЙрдЪреНрдЪ рджреГрд╢реНрдпрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рднреА рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкреАрдИрдкреА рд╕реНрддрд░ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рдЕрдВрддрддрдГ рдЖрдк рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)ред

@tsiq-oliverc

рдкреАрдЖрд░ рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ: рдЕрдкрдиреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░реНрдп рд╕рд╛рдмрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдПрдВред

рддреЛ рдХреБрдЫ рдореМрдЬреВрджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЙрдард╛рдУ, рдЗрд╕реЗ рдлреЛрд░реНрдХ рдХрд░реЗрдВ, рдЕрдкрдирд╛ (1) рд▓рд╛рдЧреВ рдХрд░реЗрдВ - рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ pipenv рд╕рд╛рде рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдФрд░ рдореБрдЭреЗ рджрд┐рдЦрд╛рдУред рдореИрдВрдиреЗ рдмрд╣реБрдд рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдореБрд╢реНрдХрд┐рд▓реЗрдВ рдЖрдИрдВред

рдпрджрд┐ рдЖрдкрдХреЗ (2) рдХрд╛ рдЕрд░реНрде рд╣реИ "рдХрд┐рд╕реА рдФрд░ рдХреЛ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ", рддреЛ рдЖрдкрдХрд╛ рдкреАрдЖрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

(3) рдореЗрдВ рдЖрдк рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрдЦреНрдпрд╛ рджрд┐рдП рдмрд┐рдирд╛ "рдорд╛рдорд▓реЛрдВ рдХреЗ рдЫреЛрдЯреЗ рдЙрдкрд╕рдореБрдЪреНрдЪрдп" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕рднреА рд╢реАрд░реНрд╖ рдкреБрд╕реНрддрдХрд╛рд▓рдп "рдЫреЛрдЯрд╛ рд╕рдмрд╕реЗрдЯ" рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ?

рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЪрд░реНрдЪрд╛ рдХреЗ рджреМрд░рд╛рди рдЬреЛ рдкрд╛рдпрд╛ рдЙрд╕рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ рдмрдирд╛рдпрд╛ред

рдлреЛрдХрд╕: рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП pipenv (рд╡рд┐рд░реЛрдзреА) рдкреИрдЯрд░реНрди

рдореИрдВрдиреЗ рдлреЛрдХрд╕ рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджрд┐рдпрд╛: рдпрд╣ рди рдХреЗрд╡рд▓ (рд╕рд╛рдорд╛рдиреНрдп) рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╕рд╕реНрддрд╛ рдерд╛ рдФрд░ рдпрд╣ рдорддрднреЗрджреЛрдВ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдореМрдЬреВрджрд╛ рдЯреВрд▓рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЛ рдмрд╛рд╣рд░ рд░рдЦрд╛ рд╣реИ рдЬреИрд╕реЗ pipenv , tox рдЖрджрд┐ред

pipenv рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИ

  • рдпрд╣ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдЙрдкрдХрд░рдг рд╣реИ, рдЬреЛ Pipfile.lock рдорд╛рдзреНрдпрдо рд╕реЗ рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
  • рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг рд╣реИред
  • рдпрд╣ рдЕрдЬрдЧрд░ рдкреИрдХреЗрдЬ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдЕрд░реНрде рдореЗрдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИред

рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ

(рдкрд╛рдпрдерди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░) рдЙрддреНрдкрд╛рдж рдпрд╛ рддреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрддреНрдкрд╛рдж (рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ рдпрд╛ рдпрд╣ рдЕрдВрддрд┐рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ "рдЙрджреНрдпрдо рдкреБрд╕реНрддрдХрд╛рд▓рдп" рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢реНрд░реЗрдгреА рдореЗрдВ рдЖрддреЗ рд╣реИрдВ (рд╕рдорд╛рди рдирд┐рдпрдо рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЫреЛрдЯреА рд╣реЛрддреА рд╣реИ)ред

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп: рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрддреНрдкрд╛рдж (рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди) рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
  • рдЖрд╡реЗрджрди: рддреИрдирд╛рдд рдФрд░ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП

рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рддрд░реАрдХреЗ:

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп: pipenv install <package> рдЗрд╕ рдкреНрд░рдХрд╛рд░ "рдкреИрдХреЗрдЬ рдХреЛ рдЦреЗрд▓рдиреЗ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рдЖрд╕рдкрд╛рд╕ рдХреЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛)"
  • рдЖрд╡реЗрджрди: pipenv sync рдЗрд╕ рдкреНрд░рдХрд╛рд░ "рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ"

рд╕рд╛рд░ рдФрд░ рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рдирд┐рд░реНрднрд░рддрд╛

  • рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛рдПрдБ: рдкреНрд░рдпреБрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдпрд╛ рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЪреАрд▓рд╛ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкрд┐рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП)
  • рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛: рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкрд┐рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдкреНрд░рдпреБрдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╣реИрд╢ рдХреЗ рд╕рд╛рде

    pipenv рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ:

  • Pipfile : рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛

  • Pipfile.lock : рдареЛрд╕ (рдмрдВрдж) рдирд┐рд░реНрднрд░рддрд╛"

рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн

рд╡рд┐рднрд┐рдиреНрди рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрднреЛрдВ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп:

    • рдПрдХ рдУрдПрд╕ рдкрд░ рдкрд╛рдпрдерди рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡: 3 рд╕реЗ 9 (30 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдмрд╡рдВрдбрд░)

    • рдУрдПрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛: 1 рд╕реЗ 3 (рд▓рд┐рдирдХреНрд╕, рдУрдПрд╕рдПрдХреНрд╕, рд╡рд┐рдВрдбреЛрдЬрд╝)

    • рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛: 3 рд╕реЗ 18

  • рдЖрд╡реЗрджрди:

    • рдПрдХ рдУрдПрд╕ рдкрд░ рдкрд╛рдпрдерди рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡: 1

    • рдУрдПрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛: 1

    • рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛: 1 (рдпрд╛ рдмрд╣реБрдд рдХрдо)

рд╕реАрдЖрдИ рд▓рдХреНрд╖реНрдп, рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдФрд░ рдирд┐рдпрддрд┐рд╡рд╛рдж

рд╕реАрдЖрдИ рд▓рдХреНрд╖реНрдп

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп:

    • рдХреЛрдб рд╕рд╣рд┐рдд рдпрд╣ рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд╕рднреА рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдкреЛрдВ рдХреЗ рднреАрддрд░ рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рд░реНрдп рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред

    • рдЬрдм (рдирд┐рдЬреА/рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ) рдкреАрдкреАрдЖрдИ рдХреЛ рдирд┐рд░реНрднрд░рддрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЕрджреНрдпрддрди рдорд┐рд▓рддрд╛ рд╣реИ, рдЕрд╕рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд░реАрдХреНрд╖рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрдерд╛рдкрдирд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред

  • рдЖрд╡реЗрджрди:

    • рдЬрдм рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдХрдВрдХреНрд░реАрдЯ/рдкрд┐рди рдХрд┐рдП рдЧрдП рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ), рд╕рднреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдПрдХ, рдкреВрд░реНрд╡-рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдХреЗ рднреАрддрд░ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ

рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рд╕реАрдЖрдИ рд▓рдХреНрд╖реНрдп:

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп:

    • рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреНрд╡рд╛рд░рд╛ рдШреЛрд╖рд┐рдд рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдкреВрд░реНрдг рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рддрд┐рдмрдВрдз рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдХреЗрд╡рд▓ рдЬрд╣рд╛рдБ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ): рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реНрд╡рдпрдВ рдХреЛ рдареАрдХ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ

    • рд╕рднреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

  • рдЖрд╡реЗрджрди:

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

    • рд╕рднреА рдЕрдкреЗрдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ

рд╡рд┐рднрд┐рдиреНрди рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдореЛрдб

  • рдореЛрдб: "рднрд╛рдЧреЛ, рдлреЙрд░реЗрд╕реНрдЯ, рднрд╛рдЧреЛ"

    • рдЖрдЬрдХрд▓ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд╛рдпрдерди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

    • tox рдпрд╛ рд╕рдорд╛рди рдкрд░реАрдХреНрд╖рдг SW . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

    • pipenv рдФрд░ рдареЛрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдХреЛрдИ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ (рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ)

  • рдореЛрдб: "рдЙрддреНрдкрдиреНрди рдФрд░ рд╕реАрд▓"

    • рднрдВрдбрд╛рд░ рдореЗрдВ рдХреЛрдИ Pipfile

    • Pipfile.lock pipenv install -e . рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛

    • Pipfile.lock рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ (рд╕реАрд▓) рдФрд░ рдореБрджреНрджреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рдмрд╛рдж рдХреЗ рдкреБрдирд░реБрддреНрдкрд╛рджрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

  • рдореЛрдб: "рд╣рд┐рдо рдпреБрдЧ"

    • рджреЛ рдЪрд░рдг рдкрд░реАрдХреНрд╖рдг

      • рдЬрдм рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛ ( setup.py install_requires рднреАрддрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд) pypi рдкрд░ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рдЖрд╢реНрд░рд┐рдд рдкреИрдХреЗрдЬ рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Pipfile.lock рдХреЛ pipenv install -e . рджреНрд╡рд╛рд░рд╛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ

    • рдлрдВрдХреНрд╢рди рдЯреЗрд╕реНрдЯ рд░рди: рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛрдб рдмрджрд▓рдиреЗ рдкрд░ рд░рди рдХрд░реЗрдВред pipenv sync Pipfile.lock рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЗ рднреАрддрд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ

      Pipfile.lock рдХреИрд╕реЗ рдФрд░ рдХрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

  • рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ (рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ)

  • рд╕реАрдЖрдИ рдмрд┐рд▓реНрдб рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ (рдФрд░ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рдХреЗ, рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ)

рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рдмрдирд╛рдо рд▓рдЪреАрд▓реЗрдкрди рдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛

  • рдкреБрд╕реНрддрдХрд╛рд▓рдп: рд▓рдЪреАрд▓рд╛рдкрди (рдЬрдм рднреА рд╕рдВрднрд╡ рд╣реЛ рдЪрд▓рд╛рдПрдВ)
  • рдЖрд╡реЗрджрди: рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж (рдЪрдпрдирд┐рдд рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рдореЗрдВ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЪрд▓рд╛рдПрдБ)

    рд╕реНрдерд╛рдкрд┐рдд рдЙрддреНрдкрд╛рдж рдХреЗ рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рдХреЛ рдХреНрдпрд╛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

  • рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреАрдкреАрдЖрдИ (рдХрдо рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж, рдкреИрдХреЗрдЬ рдХрд┐рд╕реА рднреА рд╕рдордп рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)

  • рдирд┐рдЬреА рдкреАрдкреАрдЖрдИ (рдЙрдЪреНрдЪ рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж, рдкреИрдХреЗрдЬ рдЕрдкрдбреЗрдЯ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)
  • рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рднреАрддрд░ рдЕрдореВрд░реНрдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ (рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдВрдЧреА)
  • рдареЛрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ ( Pipfile.lock ): рдХреБрд▓ рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж

рд╡рд┐рд╡рд┐рдз

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ Pipfile.lock :

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

    рдЕрдиреНрдп рд╕рдВрдХреЗрдд

  • pbr рдкреБрд╕реНрддрдХрд╛рд▓рдп requirements.txt рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдореВрд░реНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред Pipfile рдкрдврд╝рдиреЗ рдХрд╛ рдЕрдкрдбреЗрдЯ рдЬрд╛рд░реА рд╣реИред

  • poetry рдкреИрдХреЗрдЬ pyenv рд╕рдорд╛рди рдХреБрдЫ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ

    рд╕рд╛рдорд╛рдиреНрдп рдореБрджреНрджреЗ

  • "рд▓реЙрдХрдлрд╛рдЗрд▓ рдХреЛ рд░реЗрдкреЛ рдореЗрдВ рдбреНрд░реЙрдк рдХрд░реЗрдВ" рдФрд░ рдЖрдкрдХреЛ рдирд┐рдпрддрд╛рддреНрдордХ рдмрд┐рд▓реНрдб рдорд┐рд▓рддреЗ рд╣реИрдВ:

    • рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
    • рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрджрд░реНрдн рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ Pipfile.lock рдкрд░рд┐рдгрд╛рдо рджреЗрдиреЗ рдХреА рдЕрдЪреНрдЫреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЧрдВрднреАрд░рддрд╛ рд╕реЗ: flask рдЗрд╕рдХреЗ 11 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЪреБрдЕрд▓ рдПрдирд╡реАрдПрд╕ (рдПрдХ рдУрдПрд╕ рдкрд░) 10 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЙрдХ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдкрд░ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреМрди рд╣реИ?
    • рдзреНрдпрд╛рди рджреЗрдВ, рдХрд┐ "рдЬреЗрдирд░реЗрдЯ рдФрд░ рд╕реАрд▓" рд╕реАрдЖрдИ рдореЛрдб рдХреЗ рд╕рд╛рде, рдЖрдк рдЕрднреА рднреА Pipfile.lock (рд▓реЗрдХрд┐рди рд╕реАрдЖрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди) рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдХреЛ рдХрд╣реАрдВ рдФрд░ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рдорд┐рд▓рддреА рд╣реИред
  • Pipfile.lock рдкреБрд╕реНрддрдХрд╛рд▓рдп рднрдВрдбрд╛рд░ рдореЗрдВ

    • рдпрджрд┐ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ setup.py рднреАрддрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рдЯреВрдЯреА рд╣реБрдИ рдкрд░рд┐рднрд╛рд╖рд╛ рдЫреБрдкрд╛ рд╕рдХрддрд╛ рд╣реИред

  • Pipfile рдкреБрд╕реНрддрдХрд╛рд▓рдп рднрдВрдбрд╛рд░ рдореЗрдВ

    • рдпрджрд┐ рдпрд╣ рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ (рдЬрд┐рд╕реЗ setup.py рднреАрддрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ), рдпрд╣ рдЯреВрдЯреА рд╣реБрдИ setup.py рдирд┐рд░реНрднрд░рддрд╛ рдШреЛрд╖рдгрд╛ рдХреЛ рдЫреБрдкрд╛ рд╕рдХрддрд╛ рд╣реИред

    • рдЕрдиреБрд╢рдВрд╕рд┐рдд: Pipfile рджреНрд╡рд╛рд░рд╛ pipenv install -e . рдпрд╛ pipenv install -e .[tests] рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рдирд┐рд░реНрднрд░рддрд╛ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ setup.py рдореЗрдВ "рдкрд░реАрдХреНрд╖рдг" рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

  • рд╕реАрдЖрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ pipenv install <something> рдЬреЛрдбрд╝рдирд╛

    • рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рдореЗрдВ рдмрд╣реБрдд рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

    • "рдЬреЗрдирд░реЗрдЯ рдФрд░ рд╕реАрд▓" рд╕реАрдЖрдИ рдореЛрдб рджреЗрдЦреЗрдВ (рдлрд┐рд░ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдореЗрдВ рд╕рднреА рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди pipenv рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдирд┐рд╖реНрдХрд░реНрд╖

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

рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИ рдФрд░ рдпрд╣рд╛рдВ pipenv рдЬреИрд╕реЗ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдирд┐рдпрддрддреНрд╡рд╡рд╛рдж рддрдХ рдкрд╣реБрдВрдЪрдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред

рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ?

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

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

@vlcinsky poetry рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИ pyenv ред рдпрд╣ рдмрд╣реБрдд рдХреБрдЫ pipenv рдЬреИрд╕рд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, IMO) рд▓реЗрдХрд┐рди рдкреИрдХреЗрдЬрд┐рдВрдЧ рдФрд░ рдкреНрд░рдХрд╛рд╢рди рднрд╛рдЧ рдХреЗ рд╕рд╛рдеред

рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ pyproject.toml рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬреЛ рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдФрд░ рдЙрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ (рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛) рдФрд░ рдПрдХ pyproject.lock рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ рдЬреЛ рдкрд┐рди рдХреА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдг рдФрд░ pyproject.toml рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдкрд┐рди рдХреА рдЬрд╛рддреА рд╣реИред pipenv рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдиреЗ рдХреЗрд╡рд▓ рдПрдХ рдирд┐рдпрддрд╛рддреНрдордХ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╕рдордп, poetry рдпрд╣ рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреМрди рд╕реЗ рдкреИрдХреЗрдЬ рдХреЛ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЦрд┐рд▓рд╛рдл рдЬрд╛рдВрдЪ рдХрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИред

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

рдЗрд╕рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдореВрд░реНрдд рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрд╣ рджреЛрдиреЛрдВ рджреБрдирд┐рдпрд╛рдУрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред

@zface рдХрд╡рд┐рддрд╛ рдкрд┐рди рдХреА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИ, рд╕рдЪрдореБрдЪ рдкреВрд░реЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╣рд░рд╛ рд░рд╣реА рд╣реИред рдкрд┐рдкреЗрдирд╡ _idempotent_ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ _reproduction_ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХреГрдкрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдордВрдЪ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░реЗрдВ рдФрд░ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдХреБрдЫ рдРрд╕рд╛ рдмреЗрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдЬреЛ рдЗрд╕рдХреЗ рдкрд╣рд▓реЗ рдХрд╛рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд┐рдкреЗрдирд╡ рдкрд░ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рдП рдХрд┐ рд▓реЗрдЦрдХ рдХреЛ рдХреНрд▓реА рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░реЗ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХреЛ рд╕реИрдХрдбрд╝реЛрдВ рд╣рдЬрд╝рд╛рд░реЛрдВ рдорд╢реАрдиреЛрдВ рдореЗрдВ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╡рд╛рддрд╛рд╡рд░рдг рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЖрдк рд╡рд┐рдХрд╛рд╕ рдФрд░ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреЗ рдмреАрдЪ рдХреА рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдзреБрдВрдзрд▓рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рднрд╛рдЧ рди рд▓реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдЙрд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЙрддреНрдкрд╛рджрдХ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

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

@techalchemy рдореИрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмреЗрдЪ рд░рд╣рд╛ рд╣реВрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдУрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ pipenv рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ poetry рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ pyproject.lock рдореЗрдВ рдкрд┐рди рдХрд░рддрд╛ рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ pipenv Pipfile.lock ред рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ pipenv рддрд░рд╣ рд╣реА рдкреБрдирд░реБрддреНрдкрд╛рджрди рд╣реИред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдкрд┐рди рдХреА рдЧрдИ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХреА рдЬрд╛рдПрдЧреА рдФрд░ рдпрджрд┐ рдореИрдВ рдЧрд▓рдд рдирд╣реАрдВ рд╣реВрдВ рддреЛ рдпрд╣ рднреА pipenv рдХрд░рддрд╛ рд╣реИред

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

@vlcinsky рдЕрднреА рднреА рдХреБрдЫ рдмрд┐рдВрджреБ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ, рдареАрдХ рдХрд░рдиреЗ рдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдлреЙрд░реНрдо, рдкрд┐рдкреЗрдирд╡ рдпрд╛ рдЕрдиреНрдпрдерд╛ рдореЗрдВ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рд╣реВрдВред рдХреНрдпрд╛ рдЖрдк рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓реЗрдЦ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реЛрдЧреАред

рдХрд╡рд┐рддрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдИ рд╕рд╣реА рдЪреАрдЬреЗрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╢рд╛рдпрдж рдкрд┐рдкреЗрдирд╡ рдбреЙрдХреНрд╕ рдореЗрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреБрдЫ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ рдкрд┐рдкреЗрдирд╡ рджреЗрд╡ рд▓реЛрдЧреЛрдВ рдХреЛ рдЕрдкрдиреА рдУрд░ рдзрдХреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЪрд░реНрдЪрд╛ рдкреАрдкрд╛-рджреЗрд╡ рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреА рд╣реИ, рддрд╛рдХрд┐ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреА рдкреВрд░реА рддрд╕реНрд╡реАрд░ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХреЗред рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣реИред

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

@uranusjr рд╣рд╛рдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╡реНрдпрд╛рдкрдХ рджрд░реНрд╢рдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рд╣реИред рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

"рдЬреЛрдбрд╝реА рдкреНрд░рд▓реЗрдЦрди рдкреНрд░рд╛рд░реВрдкрдг" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдордп рдХреЗрд╡рд▓ рджреЛ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдЫреЛрдЯреЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдЧрд╛ред

рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЛрдЪрддрд╛ рд╣реИ (рд╕рдВрднрд╡рддрдГ рдПрдХ рдпрд╛ рджреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде):

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

рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдорди рдХрд░рддреЗ рд╣реИрдВ (рдЬреЛ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдФрд░ рдореБрдЭреЗ рдПрдХ рд╕рдореАрдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред

рдЕрдЧрд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╕рд╣рдордд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдЖрдкрд╕реЗ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкрд░реНрдХ рдХрд░реВрдВрдЧрд╛ред

@vlcinsky рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдпрджрд┐ рдЖрдк рд░реАрдпрд▓рдЯрд╛рдЗрдо рдЗрдВрдЯрд░реИрдХреНрд╢рди рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдореИрдВ PySlackers (рдПрдХ рд╕реНрд▓реИрдХ рд╡рд░реНрдХрд╕реНрдкреЗрд╕) рдкрд░ @uranusjr рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реВрдВред рдкрд┐рдкреЗрдирд╡ рдХрд╛ рд╡рд╣рд╛рдВ рдПрдХ рдЪреИрдирд▓ рд╣реИ ( #pipenv )ред

@uranusjr рдкреНрд░рдпрд╛рд╕ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рд╕реЗ рдореЗрд░рд╛ рдпрд╣реА рдорддрд▓рдм рдерд╛ред рдкрд╛рдпрдерди рдХреЛ рдХрд╛рд░реНрдЧреЛ рдЬреИрд╕реЗ рдЕрдЪреНрдЫреЗ рдкреИрдХреЗрдЬ рдореИрдиреЗрдЬрд░ рдХреА рд╕рдЦреНрдд рдЬрд░реВрд░рдд рд╣реИред рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рддрд░реАрдХреЗ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╛рдпрдерди рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдлреАрдХрд╛ рдкрдбрд╝ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ pipenv рдЗрд╕рд╕реЗ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЬреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ pipenv рдЦреБрдж рдХреЛ the officially recommended Python packaging tool рд░реВрдк рдореЗрдВ рд╡рд┐рдЬреНрдЮрд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдпрд╣ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЯреВрд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд╕реЗ рдмрд╣реБрдд рджреВрд░ рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рд╛рдордХ рд╣реИред рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрдХ рд╣реИред

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

рдФрд░ рдпрд╣рд╛рдБ pipenv рдХрд╛ рджреЛрд╖ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдкрд╛рдиреА рдХреЛ рдЧрдВрджрд╛ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧ рдЕрдм рднреА requirements.txt рдмрдирд╛рдо setup.py рд╕рд╛рде рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рд╣реА рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░реЗрдВрдЧреЗред рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЕрднреА рднреА рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ setup.py рдореЗрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдХрд╛рд░реНрдЧреЛ рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдиреЗ рд╕рд╣реА рдХрд┐рдпрд╛: рд╡реЗ рдПрдХ рдирд┐рд░рдВрддрд░рддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕рд╢реАрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ/рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ pipenv рдЬреИрд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдХрд░рддреА рд╣реИред

рдФрд░ рдЬрдм рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ:

рдЬреЛ рдкрд┐рдкреЗрдирд╡ рдФрд░ рдХрд╡рд┐рддрд╛ рджреЛрдиреЛрдВ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рди рд╣реА рдкреВрд░реА рддрд░рд╣ рд╕реЗ)

рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдореИрдВрдиреЗ рдЬреЛ рджреЗрдЦрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрдХ pipenv рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реИред рдХреЗрд╡рд▓ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ PyPI JSON API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдХрднреА-рдХрднреА рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдкреИрдХреЗрдЬреЛрдВ рдХреЗ рдХрд╛рд░рдг рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рд╡реИрд╕реЗ рднреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдЖрдкрдиреЗ рдХрд╣рд╛, рдХрд┐ рджреЛрдиреЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рд╕реАрдЦ рд╕рдХрддреА рд╣реИрдВред

рдФрд░, рдПрдХ рдФрд░ рдмрд╛рдд, рдкрд┐рдкреЗрдирд╡ рдХрд╛ рднрд╡рд┐рд╖реНрдп рдХреНрдпрд╛ рд╣реИ, рдЕрдЧрд░, рдЕрдВрддрддрдГ, рдкрд╛рдЗрдк Pipfile рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡ рдореИрдиреЗрдЬрд░ рд╣реЛрдЧрд╛?

рдпрджрд┐ рдХрд╡рд┐рддрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рдмрдВрдзрдХ рдЬреЗрд╕рди рдПрдкреАрдЖрдИ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ 'рдЦрд░рд╛рдм рдкреНрд░рдХрд╛рд╢рд┐рдд рдкреИрдХреЗрдЬ' рдХреЗ рдХрд╛рд░рдг рдХрднреА-рдХрднреА рдЧрд▓рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реЛрдЧрд╛ред рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдЬреЗрд╕рди рдПрдкреАрдЖрдИ _рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛_ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЖрдк рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдирд┐рдкрдЯ рд░рд╣реЗ рд╣реЛрдВ, рдФрд░ рдРрд╕рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╡рд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рд╣рдо рдЬреЗрд╕рди рдПрдкреАрдЖрдИ рдХреЛ рднреА рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рдереЗ, рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рддреЗрдЬрд╝ рдерд╛, рд▓реЗрдХрд┐рди рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЯреАрдо рдиреЗ рд╣рдореЗрдВ рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ред рдХреБрдЫ рд▓рдЪреАрд▓рд╛ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╕реНрд░реЛрдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред

рдЖрдЦрд┐рд░рдХрд╛рд░ рдЪреБрдиреМрддрд┐рдпрд╛рдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдмрдирд╛рдиреЗ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИрдВ рдЬреЛ рдПрдХ рд╕реЗрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЗрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрд╕ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдлрд╝ рдЬреЛ рдореЗрд░реА рдорд╢реАрди рдкрд░ рд╣рд▓ рд╣реЛрддрд╛ рд╣реИ, рдЙрд╕реА рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рднреА рдЖрдкрдХреА рдорд╢реАрди рдкрд░ рд╣рд▓ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рд╕реЗ рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ pip _will_ рд╣реИрдВрдбрд▓ pipfiles, рдпрд╣реА рдпреЛрдЬрдирд╛ рд╣реИ, рдкреНрд░рд╛рд░реВрдк рдмрдирдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдпрд╣ рдпреЛрдЬрдирд╛ рд░рд╣реА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрдЫрдиреЗ рдЬреИрд╕рд╛ рд╣реА рд╣реИ 'рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЬрдм рдкрд╛рдЗрдк рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ?' рдкреНрд░рд╢реНрди рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реИред рдкрд┐рдк рдЙрд╕ рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рдо рдлрд╛рдЗрд▓реЗрдВ рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдкреАрдЖрдИрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╡реИрд╕реЗ)ред

@techalchemy

рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдЬреЗрд╕рди рдПрдкреАрдЖрдИ рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реИ рднрд▓реЗ рд╣реА рдЖрдк рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдирд┐рдкрдЯ рд░рд╣реЗ рд╣реЛрдВ, рдФрд░ рдРрд╕рд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╡рд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ

рдпрд╣ рд╕рд┐рд░реНрдл рд╕рд╛рджрд╛ рдЧрд▓рдд рд╣реИ, рдЖрдк https://pypi.org/pypi/{project}/{release}/json рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рд░реНрднрд░рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ https://pypi.org/pypi/{project}/json рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╣реА рдорд┐рд▓реЗрдВрдЧреА, рд▓реЗрдХрд┐рди рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рд╕рд╣реА рд╕реЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдФрд░ рдЕрдЬрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдкреИрдХреЗрдЬрд┐рдВрдЧ/рдкреНрд░рдХрд╛рд╢рди рднрд╛рдЧ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдВрдд рдореЗрдВ рдпрд╣ рд╕рднреА рдХреЛ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ JSON API рдХрд╛ рдордЬрд╝рдмреВрддреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджреЗрдЧрд╛ред

рдпрд╣ рдмреЗрдХрд╛рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд▓реЙрдХрдлрд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рд╣рдо рд▓реЙрдХрдлрд╛рдЗрд▓реНрд╕ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рдЗрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрд░ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдЙрдкрд▓рдмреНрдз рд░рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдк рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдФрд░ рдкрд╛рдпрдерди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рдФрд░ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХреЗрдВред

рдФрд░ рдРрд╕рд╛ рд╣реА рдХрд░рддрд╛ рд╣реИ poetry ред рдФрд░ рдЖрдк рдЗрд╕реЗ pipenv (рдкрд╛рдЗрдк-рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдХреЗ рд╕рдорд╛рди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП JSON API рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреЗрдЦреЗрдВ https://github.com/sdispater/poetry/issues/37#issuecomment -379071989 рдФрд░ рдпрд╣ рдЕрднреА рднреА pipenv рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реЛрдЧрд╛ (https://github.com/sdispater/poetry#dependency-resolution )

@zface рдореИрдВ рдЗрд╕реЗ рдЕрдВрддрд┐рдо рдмрд╛рд░ рдХрд╣реВрдВрдЧрд╛, рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд▓реЗ рдЬрд╛рдПрдВред рдкрд┐рдкреЗрдирд╡ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдкрд╛рдпрдерди рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЯреВрд▓ рд╣реЛрдиреЗ рдХрд╛ рд╕реНрд╡-рдШреЛрд╖рдгрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣реИ ред рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрдЪрд┐рдд рд╣реИ, рддреЛ рдкрд┐рдкреЗрдирд╡ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдмрддрд╛рдПрдВ ред рдХреГрдкрдпрд╛ рдЗрди рдмрд╛рддреЛрдВ рдХреЛ рдкрд┐рдкреЗрдирд╡ рджреЗрд╡ рдкрд░ рди рдбрд╛рд▓реЗрдВред рд╢рд┐рдХрд╛рдпрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЧрд▓рдд рдЬрдЧрд╣ рд╣реИ, рдФрд░ рдЖрдк рдпрд╣рд╛рдВ рдЕрдкрдиреА рд╢рд┐рдХрд╛рдпрддреЛрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЖрдк рдЕрдкрдиреЗ рдкрд╛рд╕ рдореМрдЬреВрдж рддрдХрдиреАрдХреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдмреЗрд╣рддрд░ рдЙрддреНрддрд░ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдкрд┐рдкреЗрдирд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрджреНрджрд╛ рдЯреНрд░реИрдХрд░ рд╣реИ, рди рдХрд┐ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬрд┐рдВрдЧ рдЯреВрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд░реНрдЪрд╛ рдмреЛрд░реНрдб рдФрд░ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬрд┐рдВрдЧ рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИред

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

рдпрд╣ рд╕рд┐рд░реНрдл рд╕рд╛рджрд╛ рдЧрд▓рдд рд╣реИ,

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

рдпрд╣ рдЕрднреА рднреА рдкрд┐рдкреЗрдирд╡ рд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд╣реЛрдЧрд╛ (https://github.com/sdispater/poetry#dependency-resolution)

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

рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЪрд░реНрдЪрд╛ рд╡рд┐рд╖рдп рд╕реЗ рдкрд░реЗ рд╣реИ, рдЬреЛ рдкрд┐рдкреЗрдирд╡ рдХреЗ рдЖрд╕рдкрд╛рд╕ "рдЕрдЪреНрдЫреЗ рдкреНрд░рдерд╛рдУрдВ" рдХреЛ рднреБрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реА рдереАред

рддрдерд╛рдкрд┐,

[...] рдЕрднреА рднреА рд╡рд╣реА рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░реЗрдЧрд╛ рдЬреЛ рдкрд╣рд▓реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ.txt рдмрдирд╛рдо setup.py рдХреЗ рд╕рд╛рде рдХреА рдЧрдИ рдереАрдВред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдЙрдирдХреЗ setup.py рдореЗрдВ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЕрднреА рднреА рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдкреИрдХ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

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

рдФрд░ рдкрд┐рдкреЗрдирд╡ (рдФрд░ рд╢рд╛рдпрдж рдХрд╡рд┐рддрд╛) рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрджрдо рд╣реИред

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

рдЙрдирдХрд╛ рд╕рд┐рд░реНрдл рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХрд░рддрд╛ рд╣реИ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП requirements.txt/Pipfile рдРрд╕реЗ PBR рд░реВрдк libs рд╕реЗ 'рдЖрд╕рд╛рди setup.py', рдПрдХ Pipfile рдЕрд╡рдЧрдд рдЖрд╡рд░рдг arround рдХрд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рдиреЗ рдХреЗ install_requires рдХреЗ рдмрд┐рдирд╛, рд╕рднреА рдЕрд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ pbr рд▓рд╛рддрд╛ рд╣реИ, рдФрд░ рдкреИрдХреЗрдЬ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╕рдорд░реНрдкрд┐рдд setuptools рдЖрд╡рд░рдг рдореЗрдВ рдЬреЛ рдХреЗрд╡рд▓ рд╡рд╣реА рдХрд░рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рджреБрдирд┐рдпрд╛ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ:

  • pipenv Pipfile рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП (рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рджреЛрдиреЛрдВ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдгрд┐рдд)
  • pipenv Pipfile.lock рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП (рдХреЗрд╡рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг)
  • рдПрдХ рдкреИрдХреЗрдЬ рдЖрд╡рд░рдг рдЗрд╕ рдЬрд╛рджреВ (рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ pipfile_setuptools , install_requires_pipfile ?) рд╣реИ рдХрд┐ рдПрдХ рдкреНрд░рдердо рд╕реНрддрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛ рдХрд╛рдо рдХреЗрд╡рд▓ рдЗрдВрдЬреЗрдХреНрд╖рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ Pipfile рдореЗрдВ install_requires ред

рдпрд╣ рдПрдХ рдФрд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдЬреЛ pipenv рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп Pipfile рдкрд╛рд░реНрд╕рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?

рдореЗрд░реА рд╕рдордЭ Pypa рд╕реЗ @gsemet рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдХрд┐ pyproject.toml рд╕рд╛рде рдмрдЬрд╛рдп, рдХреЗ рдиреЗрддреГрддреНрд╡ рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдЙрдбрд╝ рдЬрд╛рдирд╛ ред рдкрд┐рдкрдлрд╛рдЗрд▓ рдХреЛ рд╕реНрд░реЛрдд рдкреНрд░рд╛рд░реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрд╣рд▓реЗ рдЙрдирд╕реЗ (рдкрд╛рдЗрдкрд╛-рджреЗрд╡ рдпрд╛ рдбрд┐рд╕реНрдЯреБрдЯрд┐рд▓реНрд╕-рд╕рд┐рдЧ рдкрд░) рдмрд╛рдд рдХрд░рдиреА рд╣реЛрдЧреАред Pipfile (рдФрд░ рд▓реЙрдХ рдлрд╝рд╛рдЗрд▓) рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕реЗ pypa/pipfile (рдЬреЛ Pipenv рд╡рд┐рдХреНрд░реЗрддрд╛рдУрдВ рдХреЛ рдХреЛрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдореЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


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

рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВ pyproject.toml рдореЗрдВ рдШреЛрд╖рд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рджреЗрдЦрдХрд░ рдереЛрдбрд╝рд╛ рджреБрдЦреА рд╣реВрдВ (рдЬреЛ рдкреАрдмреАрдЖрд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ setup.cfg рд░реВрдк рдореЗрдВ рднреВрдорд┐рдХрд╛рдПрдВ рд▓реЗрддрд╛ рд╣реИ), рдЬрдмрдХрд┐ рдкреАрдкреАрдП Pipfile рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ....

рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдлрд╝реНрд▓рд┐рдЯ рдХрд░рдиреЗ рдФрд░ рдкрд╛рдЗрдкрдлрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╡рд╣рд╛рдБ рднреА Kennethreitz рдХреА рд╣реИ pipenvlib рдХрд┐ рд╣рд▓реНрдХрд╛ рд▓рдЧрддрд╛ рд╣реИред

PBR рдХрд╛ setup.cfg рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ (рдЙрджрд╛: data_files ) рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдХрдИ рдЯреВрд▓ (flake8, pytest, ...) рдПрдХ рдЕрдЬрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЬрдбрд╝ рдореЗрдВ рдлрд╝рд╛рдЗрд▓)

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

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

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

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

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

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

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