рдореИрдВрдиреЗ рдкреВрд░рд╛ рджрд┐рди рдЧрд┐рдЯ рд╕реЗ рдЙрдк-рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ рд╣реИ рдФрд░ рдореИрдВ рдЕрднреА рднреА рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рдПрдХ рдореМрдЬреВрджрд╛ рдкрд╛рдпрдерди рд▓рд╛рдЗрдмреНрд░реЗрд░реА (PyPi рдкрд░ рдЙрдкрд▓рдмреНрдз) рдХреЛ рдлреЛрд░реНрдХ рдХрд┐рдпрд╛, рдХреБрдЫ рдмрджрд▓рд╛рд╡ рдЬреЛрдбрд╝реЗ рдЬреЛ рдХрд┐ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдореЗрдВ рд╡рд┐рд▓рдп рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред
рдореЗрд░реА рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛рдВрдЯреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИрдВред рдкрд╣рд▓реЗ рдпрд╣ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдерд╛, рдФрд░ рдореИрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдкреЗрдирд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬрд╣рд╛рдВ рдореИрдВ рдкрд┐рдкрдлрд╛рдЗрд▓ рдореЗрдВ рдЧрд┐рдЯ рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╢рд╛рдЦрд╛/рдкреНрд░рддрд┐рдмрджреНрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдореЗрд░рд╛ рдЖрд╡реЗрджрди рдмрдврд╝рддрд╛ рдЧрдпрд╛ рдФрд░ рдЕрдм рдореИрдВ рдЗрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдпрд╣ рдкреАрдкреАрдкреАрдЖрдИ рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ)ред рдореБрдЭреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдЧрд┐рдЯ рд╕реЗ рдЙрдк-рдирд┐рд░реНрднрд░рддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореБрджреНрджреЛрдВ рдХреЛ рдкрдврд╝рд╛ рд╣реИ: #3610, #4187, #2124, #5384 рдФрд░ рдХрдИ рдЕрдиреНрдп рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреАрдИрдкреАред рдЬрдм рдореИрдВрдиреЗ рдкрдврд╝рдирд╛ рд╕рдорд╛рдкреНрдд рдХрд┐рдпрд╛ рддреЛ рдореИрдВ рдЙрд╕ рд╕рдордп рд╕реЗ рднреА рдЕрдзрд┐рдХ рднреНрд░рдорд┐рдд рдерд╛ рдЬрдм рдореИрдВрдиреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ред
рдкреАрдИрдкреА -508 рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдЬреЛ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛, рдЙрд╕рд╕реЗ рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
setup(
name='dmfigol',
...
install_requires=[
"requests",
'smartsheet-python-sdk @ git+ssh://[email protected]/dmfigol/smartsheet-python-sdk@dev#egg=smartsheet-python-sdk-1.3.3',
],
)
рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛:
-> % pip install git+https://<private-git>/dmfigol/my-test-project.git
Collecting git+https://<private-git>/dmfigol/my-test-project.git
...
Direct url requirement (like smartsheet-python-sdk@ git+ssh://[email protected]/dmfigol/smartsheet-python-sdk@dev#egg=smartsheet-python-sdk-1.3.3) are not allowed for dependencies
рдореЗрд░реЗ рд╕рд╡рд╛рд▓:
1) рдХреНрдпрд╛ рдореИрдВрдиреЗ рдХреБрдЫ рдЧрд▓рдд рдХрд┐рдпрд╛ рдпрд╛ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ?
2) рдпрджрд┐ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
3) рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдореИрдВ setup.py рд╕реЗ рдХреБрдЫ рдФрд░ рдШреЛрд╖рдгрд╛рддреНрдордХ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ pyproject.toml
рдореЗрдВ рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
4) рдХреНрдпрд╛ --process-dependency-links
рдФрд░ dependency_links
рдЕрдиреБрднрд╛рдЧ рдХреЛ setup.py
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЬ рдПрдХрдорд╛рддреНрд░ рдЙрдкрд▓рдмреНрдз рд╕рдорд╛рдзрд╛рди рд╣реИ?
5) рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЕрдкрд╕реНрдЯреНрд░реАрдо PyPi рдкрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ 1.3.4 рдпрд╛ рдЙрдЪреНрдЪрддрд░ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдЕрднреА рднреА рдЕрдкрдиреЗ рдлреЛрд░реНрдХрдб рд╕рдВрд╕реНрдХрд░рдг 1.3.3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛?
рд╢реБрдХреНрд░рд┐рдпрд╛
UPD: рдпрджрд┐ рдЖрдк рдЗрд╕ рдзрд╛рдЧреЗ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддреЗ рд╣реИрдВ рддреЛ #4187 рддрдХ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
setup(
...
install_requires=[
"smartsheet-python-sdk==10.1.3.3",
],
dependency_links=[
'https://github.com/dmfigol/smartsheet-python-sdk/archive/no-setuptools-scm.zip#egg=smartsheet-python-sdk-10.1.3.3'
],
...
рдХреНрдпрд╛ рдореИрдВрдиреЗ рдХреБрдЫ рдЧрд▓рдд рдХрд┐рдпрд╛ рдпрд╛ рдпрд╣ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ?
рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреАрдИрдкреА 508 рдпреВрдЖрд░рдПрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рдпрджрд┐ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛?
рд╣рд╛рдВред рдирд┐рдЪреЗ рджреЗрдЦреЛред
рдХреНрдпрд╛ рдореИрдВ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдореИрдВ setup.py рд╕реЗ рдХреБрдЫ рдФрд░ рдШреЛрд╖рдгрд╛рддреНрдордХ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ pyproject.toml рдореЗрдВ рднреА рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
pyproject.toml
рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдХреНрдпрд╛ setup.py рдореЗрдВ --рдкреНрд░реЛрд╕реЗрд╕-рдирд┐рд░реНрднрд░рддрд╛-рд▓рд┐рдВрдХреНрд╕ рдФрд░ рдирд┐рд░реНрднрд░рддрд╛_рд▓рд┐рдВрдХреНрд╕ рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЬ рдПрдХрдорд╛рддреНрд░ рдЙрдкрд▓рдмреНрдз рд╕рдорд╛рдзрд╛рди рд╣реИ?
рд╣рд╛рдВред #4187 рдХреЗ рдкреАрдЫреЗ рдпрд╣реА рдкреВрд░реА рдкреНрд░реЗрд░рдгрд╛ рд╣реИред
рд╣рдордиреЗ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдкреАрдИрдкреА 508 рдпреВрдЖрд░рдПрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреАрдИрдкреАрдЖрдИ рд╕реЗ рдПрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╛рдЗрдк рдПрдХ рдордзреНрдпрд╕реНрде рд╡реЗрдм рдпреВрдЖрд░рдПрд▓ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХреЗред рдореВрд▓ рд░реВрдк рд╕реЗ, pip install spam
рдХреЛ рдкреАрдИрдкреАрдЖрдИ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рддрдХ рдкрд╛рдЗрдк рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
#4187 рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдЕрд╡рд░реБрджреНрдз рд╕рд╢рд░реНрдд рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ URL рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░реЗ рдЬрдм рдХреЛрдИ рдкреИрдХреЗрдЬ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реАрдзреЗ PyPI рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛ, рддрд╛рдХрд┐ рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ PEP 508 URL рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред
рд╡рд┐рд╕реНрддреГрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВред
рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдХ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдХреГрдкрдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓реЗрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреАрдИрдкреА 508 рдпреВрдЖрд░рдПрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВред
рд╣рд╛рдВред рдирд┐рдЪреЗ рджреЗрдЦреЛред
pyproject.toml
рдХреЗрд╡рд▓ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдирд┐рд░реНрднрд░рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЯреВрд▓ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрд╣рд╛рдВред #4187 рдХреЗ рдкреАрдЫреЗ рдпрд╣реА рдкреВрд░реА рдкреНрд░реЗрд░рдгрд╛ рд╣реИред
рд╣рдордиреЗ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдкреАрдИрдкреА 508 рдпреВрдЖрд░рдПрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреАрдИрдкреАрдЖрдИ рд╕реЗ рдПрдХ рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдкрд╛рдЗрдк рдПрдХ рдордзреНрдпрд╕реНрде рд╡реЗрдм рдпреВрдЖрд░рдПрд▓ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХреЗред рдореВрд▓ рд░реВрдк рд╕реЗ,
pip install spam
рдХреЛ рдкреАрдИрдкреАрдЖрдИ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рддрдХ рдкрд╛рдЗрдк рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред#4187 рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдЕрд╡рд░реБрджреНрдз рд╕рд╢рд░реНрдд рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ URL рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░реЗ рдЬрдм рдХреЛрдИ рдкреИрдХреЗрдЬ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реАрдзреЗ PyPI рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реЛ, рддрд╛рдХрд┐ рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛ PEP 508 URL рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗред