рдкрд╣рд┐рдпреЛрдВ рдкрд░ рдЕрдЬрдЧрд░

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

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

рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, PJE рдиреЗ рдбрд┐рд╕реНрдЯрд▓реНрдпреВрдЯ рдореЗрдВ рд╕реБрдзрд╛рд░ рд▓рд╛рдиреЗ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдкрд╛рдпрдерди рдкреИрдХреЗрдЬ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдкреНрдЯреВрд▓ рдФрд░ pkg_resource рдХрд╛ рдорд┐рд╢реНрд░рдг рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП easy_install рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦреАред рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рддрд░рдг рдкреНрд░рд╛рд░реВрдк рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг, 'рдЕрдВрдбрд╛' рдкреНрд░рд╛рд░реВрдк рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рд╕рдореБрджрд╛рдп рдЕрд▓рдЧ рд╣реЛ рдЧрдпрд╛, рдФрд░ рдЗрд╕рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рдкреНрд░рд╛рд░реВрдк рдФрд░ 'рдЕрдВрдбреЗ' рдХреА рдореГрддреНрдпреБ рдХреА рдШреЛрд╖рдгрд╛ рдХреАред рдЙрд╕рдХреЗ рдмрд╛рдж, рдкрд╛рдЗрдк, easy_install рдХреА рдЬрдЧрд╣, рдЕрдВрдбреЗ рдХреЗ рдкреНрд░рд╛рд░реВрдк рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ред

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

рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рднреА рдХреНрд░рд┐рдпрд╛ рдПрдХ рдЖрднрд╛рд╕реА рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╣реЛрддреА рд╣реИрдВ ред

рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдкрд╣рд┐рдпрд╛?


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

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

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

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

рдЗрди рд╕рдм рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╣рд┐рдпрд╛ рдЕрдм рдХреЗрд╡рд▓ рджреЛ рдЪрд░рдо рд╕реАрдорд╛рдУрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИ: рдмрд╛рдЗрдирд░реА рдкреИрдХреЗрдЬ рдФрд░ рдкреИрдХреЗрдЬ рдЬрд┐рд╕рдореЗрдВ рдкреНрдпреЛрд░ рдкрд╛рдЗрдерди рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдмрд╛рдЗрдирд░реА рдкреИрдХреЗрдЬ рдкрд╛рдпрдерди рд╢рд╛рдЦрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИрдВ 2. xред рдЕрдм рдпрд╣ рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ 2.x рдЪрдХреНрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ 2.7 рдХреЗ рд▓рд┐рдП рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдкреИрдХреЗрдЬ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдВрдЧреЗред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдЕрдЪрд╛рдирдХ рдЕрдЬрдЧрд░ 2.8 рдкрд░ рдЖ рдЧрдпрд╛, рддреЛ рдпрд╣ рдХрд╣рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдкреИрдХреЗрдЬ рдкрд╛рдпрдерди рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреИрдХреЗрдЬ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХрдорд╛рддреНрд░ рдорд╛рдорд▓рд╛ рддрдм рд╣реИ рдЬрдм рдЗрд╕рдореЗрдВ CFFI рд╕реЗ ctypes рдХреЗ рд╕рд╛рде рднрд░реА рд╣реБрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд▓рд┐рдмреЗрдкреАрдереЙрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реЗ рднрд╛рд╖рд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реЛрддреЗ рд╣реИрдВ (рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ pypy рдХреЗ рд╕рд╛рде рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред

рд▓реЗрдХрд┐рди рдПрдХ рдЙрдЬреНрдЬреНрд╡рд▓ рдкрдХреНрд╖ рд╣реИ: рдХреБрдЫ рднреА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдЬрд╛рддреАрдп рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдкрд╣рд┐рдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддрд╛ рд╣реИред

рд╡реНрд╣реАрд▓ рдЕрд╕реЗрдВрдмрд▓реА


рддреЛ рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд┐рдпрд╛ рдХреНрдпрд╛ рд╣реИред рдЕрдкрдирд╛ 'рдкрд╣рд┐рдпрд╛' рдХреИрд╕реЗ рдмрдирд╛рдПрдВ? рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рд╕реЗ рдЗрдХрдЯреНрдард╛ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ setuptools рдФрд░ wheel рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рд╣рд┐рдПред рдПрдХ рдмрд╛рд░ рджреЛрдиреЛрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, 'рдкрд╣рд┐рдпрд╛' рдХреЛ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 $ python setup.py bdist_wheel 

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

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЗрдЯрдкреВрд▓ рд╕реЗ рд╡рд┐рддрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ, рдкрд╡рд┐рддреНрд░рддрд╛ рдХреЗ рдЭрдВрдбреЗ рдХреЛ рдлреЗрдВрдХрдирд╛ рд╣реИ:
 import os from setuptools import setup from setuptools.dist import Distribution class BinaryDistribution(Distribution): def is_pure(self): return False setup( ..., include_package_data=True, distclass=BinaryDistribution, ) 

рд╡реНрд╣реАрд▓ рд╕реЗрдЯрд┐рдВрдЧ


рдкрд╛рдЗрдк рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, 'рдкрд╣рд┐рдпрд╛' рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 $ pip install package-1.0-cp27-none-macosx_10_7_intel.whl 

рд▓реЗрдХрд┐рди рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХреБрдЫ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд┐рдирд╛ рднреА рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдкрд╛рдЗрдк рдЖрдкрдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рд╕реЗ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдФрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдкрд╣рд┐рдП рд╣реИрдВ, рддреЛ рдЖрдк рдирд┐рдореНрди рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 $ pip install --no-index --find-links=path/to/wheels package==1.0 

рдпрд╣ рд╣рдорд╛рд░реЗ рд╡рд░реНрдЪреБрдЕрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкреИрдХреЗрдЬ package рд╕рдВрд╕реНрдХрд░рдг 1.0 рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред

рд╡реНрдпрд╕рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд┐рдП


рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдорд╛рд░реА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдкрд┐рдк рдЖрдкрдХреЛ wheel рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
 pip wheel --wheel-dir=path/to/wheels package==1.0 

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

рдпрд╣ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдПрдХ рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХреИрд╢ рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдкрд╣рд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
 #!/bin/sh WHEEL_DIR=path/to/wheels DOWNLOAD_CACHE_DIR=path/to/cache rm -rf $DOWNLOAD_CACHE_DIR mkdir -p $DOWNLOAD_CACHE_DIR pip wheel --use-wheel -w "$WHEEL_DIR" -f "$WHEEL_DIR" \ --download-cache "$DOWNLOAD_CACHE_DIR" package==1.0 for x in "$DOWNLOAD_CACHE_DIR/"*.whl; do mv "$x" "$WHEEL_DIR/${x##*%2F}" done 

рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдереЛрдбрд╝реА рдФрд░ рдЧрдВрднреАрд░ рд╣реИ: рдЕрдЧрд░ рдкрд╛рдИрдкреАрдЖрдИ рдкрд░ рдирд╣реАрдВ рд╣реИ рддреЛ рдкрд╛рдЗрдк рд╣рдорд╛рд░реЗ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреЛ рдХреИрд╕реЗ рдЦреЛрдЬреЗрдЧрд╛? рдпрд╣ рд╕рд╣реА рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреНрд░рд▓реЗрдЦрди pip wheel package рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди pip wheel -r requirements.txt , рдЬрд╣рд╛рдВ requirements.txt ред рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

DevPI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдкреИрдХреЗрдЬ


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

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

рдореИрдВ рд╕реНрдерд╛рдиреАрдп virtualenv рдореЗрдВ DevPI рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж PATH рдореЗрдВ devpi-server рдФрд░ devpi рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
 $ virtualenv devpi-venv $ devpi-venv/bin/pip install --upgrade pip wheel setuptools devpi $ ln -s `pwd`/devpi-venv/bin/devpi ~/.local/bin $ ln -s `pwd`/devpi-venv/bin/devpi-server ~/.local/bin 

рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рд┐рд░реНрдл devpi-server рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ devpi-server , рдФрд░ рдпрд╣ рддрдм рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
 $ devpi-server --start 

рдЗрд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 $ devpi use http://localhost:3141 $ devpi user -c $USER password= $ devpi login $USER --password= $ devpi index -c yourproject 

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

рд╕реНрдерд╛рдиреАрдп рднрдВрдбрд╛рд░ рдореЗрдВ рдкрд╛рдЗрдк рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
 $ export PIP_INDEX_URL=http://localhost:3141/$USER/yourproject/+simple/ 

рдореИрдВ рдЗрд╕ рдЖрджреЗрд╢ рдХреЛ рдЧрд▓рдд рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕реЗ рдЖрдХрд╕реНрдорд┐рдХ рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ virtualenv рдХреЗ postactivate рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ postactivate ред

рд╕реНрдерд╛рдиреАрдп DevPI рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╣рд┐рдпреЗ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, devpi рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ devpi :
 $ devpi use yourproject $ devpi upload --no-vcs --formats=bdist_wheel 

--no-vcs рдЬрд╛рджреВ рдХреЛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рд╡рд┐рддрд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╡реАрд╕реАрдПрд╕ (рдмрд╛рдпрдиреЗрд░рд┐рдЬрд╝, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ред

рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдЕрддреНрдпрдзрд┐рдХ рд╕реЗрдЯрдЕрдк рд╕реЗрдЯрдЕрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ PyPI рдЙрдиреНрд╣реЗрдВ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ DevPI рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЧрд▓рддреА рд╕реЗ setup.py resease рдХреЛрдб рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдУрд╡рд░рд▓реЛрдб рди рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ рдЧрд▓рдд PyPI рдХреНрд▓рд╛рд╕рд┐рдлрд╛рдпрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реИ:
 setup( ... classifier=['Private :: Do Not Upload'], ) 

рд▓рдкреЗрдЯ рд▓реЛ


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

'рдЕрдВрдбреЗ' рдХреА рддреБрд▓рдирд╛ рдореЗрдВ


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

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

рддреЛ рдЕрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИред рдкрд╣рд┐рдпреЛрдВ рдкрд░ рдЕрдЬрдЧрд░ред рдФрд░ рдпрд╣ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

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


All Articles