рджреЗрдЦреЗрдВ https://github.com/Kozea/WeasyPrint/issues/133
рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:
python -m weasyprint.navigator
рдЪрд▓ рд░рд╣рд╛ рд╣реИ[sys.executable] + sys.argv
рд╣реИ ['тАж/python', 'тАж/weasyprint/navigator.py']
-m
, рдЗрд╕рд▓рд┐рдП рдкрд╛рдпрдерди .py рдлрд╝рд╛рдЗрд▓ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ sys.path
рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИhtml.entities
рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИweasyprint/html.py
рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИрдпрд╣рд╛рдВ рдХреЛрдИ рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЖрдк рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдХреИрд╕реЗ рджреЗрддреЗ рд╣реИрдВ? рдЖрдк тАж/weasyprint/navigator.py
(рдЬрд┐рд╕рдХрд╛ рдЕрдзрд┐рдХрддрд░ рдЙрдкрдпреЛрдЧ python -m
рд╕рд╛рде рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ) рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рд╣реИ рддреЛ рдЗрд╕рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ sys.path
рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ?
рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрдЧрд░ WERKZEUG рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдЙрдкрдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреИрджрд╛ рдХреА, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЗрд╕реЗ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛ __loader__.fullname
рдЕрдЬрдЧрд░ 2 рдореЗрдВ рдФрд░ __loader__.name
рдЕрдЬрдЧрд░ 3 рдореЗрдВ рдпрджрд┐ рд╡рд┐рджреНрдпрдорд╛рдиред
@untitaker , рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред __loader__
рдХреНрдпрд╛ рд╣реИ?
рдХреНрдпрд╛ рд╣рдо рдкрд╛рдпрдерди рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ python -m somemodule
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдирд╣реАрдВ
рдореИрдВ рдПрдХ StackOverflow рдЙрддреНрддрд░ рдореЗрдВ рдЖрдпрд╛ рдЬрд┐рд╕рдиреЗ рд╕рдордЭрд╛рдпрд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдпрдерди 2 рдореЗрдВ, __loader__.fullname
рдЙрдкрд▓рдмреНрдз рд╣реИ:
print(__loader__.fullname)
__loader__
рд╡реИрд╢реНрд╡рд┐рдХ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдкрд╛рдпрдерди рдлрд╝рд╛рдЗрд▓ рдХреЛ -m
рдмрд┐рдирд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЖрдпрд╛рддрд┐рдд рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рднреА рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред
рдкрд╛рдпрдерди 3 рдореЗрдВ, рджреЛрдиреЛрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛ -m
рд╕рд╛рде рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдЖрдпрд╛рддрд┐рдд рдореЙрдбреНрдпреВрд▓ рдореЗрдВ __loader__
рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИ, fullname
рд╡рд┐рд╢реЗрд╖рддрд╛ рдЕрдм name
ред рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░, name
рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ _current_ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИред
рддреЛ, рдкрд╛рдпрдерди 2 рдореЗрдВ рд╣рдо _can_ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо -m
рд╕рд╛рде рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 3 рдореЗрдВ рдирд╣реАрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдпрд╛ рддреЛ рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рд╕реАрдзреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрдВрджрд░ рд╣реА рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ python -m
рдХрд╛ рдЙрдкрдпреЛрдЧ __loader__
рдЪрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд╛рде рд╣реА, рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдмрд╣реБрдд рдХрдо рдкреНрд░рд▓реЗрдЦрд┐рдд рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рд╡реИрд╕реЗ рднреА Werkzeug рдореЗрдВ рдпрд╣реА рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдореИрдВ рдЕрднреА рдЗрд╕ рдмрдЧ рдореЗрдВ рдЦреБрдж рдЖрдпрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐ -m
рдзреНрд╡рдЬ sys.argv
, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╣реИред
рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд╛рдп рд╣реИ?
рд╣рд╛рдБ, рдПрдХ https://github.com/mitsuhiko/flask/issues/1246 . рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
9 рдЬреБрд▓рд╛рдИ 2015 рдХреЛ 15:08:30 рд╕реАрдИрдПрд╕рдЯреА, рд╡реЗрди рд╡рд░реНрдирд░ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рдореИрдВ рдЕрднреА рдЗрд╕ рдмрдЧ рдореЗрдВ рдЦреБрдж рдЖрдпрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА рдХрд┐
-m
рдЭрдВрдбрд╛ рд╣реЛрдЧрд╛
sys.argv
, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рд╣реИредрдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрдкрд╛рдп рд╣реИ?
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/mitsuhiko/werkzeug/issues/461#issuecomment -119955695
K-9 рдореЗрд▓ рдХреЗ рд╕рд╛рде рдореЗрд░реЗ Android рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛ред рдореЗрд░реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЛ рдорд╛рдлрд╝ рдХрд░реЛред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░реАрд▓реЛрдбрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЧреИрд░-рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ:
$ python -m myapp.entrypoints.website
* Running on http://127.0.0.1:5000 (Press CTRL+C to quit)
* Restarting with stat
Traceback (most recent call last):
File "/tmp/myapp/entrypoints/website.py", line 9, in <module>
from . import mymodule
ValueError: Attempted relative import in non-package
рдкрд╛рдпрдерди <3.3 рдореЗрдВ @untitaker рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ python -m
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХреЗрд╡рд▓ рддрднреА __loader__
рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рдкреБрдирдГ рд▓реЛрдбрд░ рдХреЛ sys.argv
рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░реЗрдВред
try:
sys.argv = ['-m', __loader__.fullname] + sys.argv[1:]
except NameError:
pass
рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рд╣реИрдХреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ (рдФрд░ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди <3.3 рдХреЗ рд▓рд┐рдП)ред
#531 рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рджрд┐рдЦрд╛
2 рд╕реЗ 3 рдХреЗ рдмреАрдЪ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ред
рдЧреБрд░реБ, резреж рд╕рд┐рддрдВрдмрд░, реирежрезрел рдХреЛ режрез:реирем:релрем рдЕрдкрд░рд╛рд╣реНрди режренрежреж рдмрдЬреЗ, рдорд╛рд░реНрдЯрд┐рдЬрди рд╡рд░реНрдорд╛рдд рдиреЗ рд▓рд┐рдЦрд╛:
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░реАрд▓реЛрдбрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЧреИрд░-рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ:
$ python -m myapp.entrypoints.website * Running on http://127.0.0.1:5000 (Press CTRL+C to quit) * Restarting with stat Traceback (most recent call last): File "/tmp/myapp/entrypoints/website.py", line 9, in <module> from . import mymodule ValueError: Attempted relative import in non-package
рдкрд╛рдпрдерди <3.3 рдореЗрдВ @untitaker рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛
python -m
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХреЗрд╡рд▓ рддрднреА__loader__
рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рдкреБрдирдГ рд▓реЛрдбрд░ рдХреЛsys.argv
рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░реЗрдВредtry: sys.argv = ['-m', __loader__.fullname] + sys.argv[1:] except NameError: pass
рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рд╣реИрдХреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ (рдФрд░ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди <3.3 рдХреЗ рд▓рд┐рдП)ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ:
https://github.com/mitsuhiko/werkzeug/issues/461#issuecomment -139369694
рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ,
$ python -m werkzeug.serving weeasyprint. рдиреЗрд╡рд┐рдЧреЗрдЯрд░: рдРрдк --reload --debug
рдЕрдЬрдЧрд░ рдХреЗ рдЗрд╕ рдмрдЧ рдХреЛ рдЕрдЬрдЧрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ рдХрдВрд╕реЛрд▓-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ
рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡? рдмрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ ... (рдкрд╛рдпрдерди 3.6, рдХреЛрдИ рдЖрд╕рд╛рди рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ, рдмрд╕ python -m werkzeug.serving app:application
)
рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:
PYTHONPATH=$PWD:$PYTHONPATH python -m myapp.entrypoints.website
_рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдКрдкрд░ рдерд╛ : рддреАрд░_рдЕрдк: _
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░реАрд▓реЛрдбрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЧреИрд░-рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ:
рдкрд╛рдпрдерди <3.3 рдореЗрдВ @untitaker рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛
python -m
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХреЗрд╡рд▓ рддрднреА__loader__
рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдФрд░ рдкреБрдирдГ рд▓реЛрдбрд░ рдХреЛsys.argv
рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рдХреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░реЗрдВредрд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рд╣реИрдХреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣реИ (рдФрд░ рдХреЗрд╡рд▓ рдкрд╛рдпрдерди <3.3 рдХреЗ рд▓рд┐рдП)ред
#531 рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред