Werkzeug: рд░реАрд▓реЛрдбрд░, рдкрд╛рдпрдерди-рдПрдо, рдФрд░ sys.path

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдирд╡ре░ 2013  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pallets/werkzeug

рджреЗрдЦреЗрдВ https://github.com/Kozea/WeasyPrint/issues/133

рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ:

  • python -m weasyprint.navigator рдЪрд▓ рд░рд╣рд╛ рд╣реИ
  • [sys.executable] + sys.argv рд╣реИ ['тАж/python', 'тАж/weasyprint/navigator.py']
  • рд░реАрд▓реЛрдбрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ рд╕рдмрдкреНрд░реЛрд╕реЗрд╕ рдмрдирд╛рддрд╛ рд╣реИ
  • рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕ рдореЗрдВ -m , рдЗрд╕рд▓рд┐рдП рдкрд╛рдпрдерди .py рдлрд╝рд╛рдЗрд▓ рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ sys.path рдЬреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ
  • Werkzeug stdlib рдХреЗ html.entities рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ
  • рдпрд╣ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ weasyprint/html.py рдЖрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ
  • рд╕рд╛рдорд╛рди рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ

рдпрд╣рд╛рдВ рдХреЛрдИ рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдЧрд▓рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЖрдк рдЗрд╕ рд╕реНрдерд┐рддрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рдХреИрд╕реЗ рджреЗрддреЗ рд╣реИрдВ? рдЖрдк тАж/weasyprint/navigator.py (рдЬрд┐рд╕рдХрд╛ рдЕрдзрд┐рдХрддрд░ рдЙрдкрдпреЛрдЧ python -m рд╕рд╛рде рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИ) рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдпрджрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рд╣реИ рддреЛ рдЗрд╕рдХреА рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ sys.path рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ?

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

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд░реАрд▓реЛрдбрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЧреИрд░-рдкреИрдХреЗрдЬ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ:

$ 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 рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЕрдЧрд░ 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

  • http://127.0.0.1 :5000/ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП CTRL+C рджрдмрд╛рдПрдВ)
  • stat . рдХреЗ рд╕рд╛рде рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдирд╛
    рдЯреНрд░реЗрд╕рдмреИрдХ (рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рдХреЙрд▓ рдЕрдВрддрд┐рдо):
    рдлрд╝рд╛рдЗрд▓ "/usr/lib/python2.7/site-packages/werkzeug/serving.py", рд▓рд╛рдЗрди 45, рдореЗрдВ
    рд╕реЗ ._compat рдЖрдпрд╛рдд PY2
    ValueError: рдЧреИрд░-рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рд╛рдкреЗрдХреНрд╖ рдЖрдпрд╛рдд рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛

рдЕрдЬрдЧрд░ рдХреЗ рдЗрд╕ рдмрдЧ рдХреЛ рдЕрдЬрдЧрд░ рдХреЗ рд╕рд╛рде рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдХ рдХрдВрд╕реЛрд▓-рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВ

рдЗрд╕рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡? рдмрд╕ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ ... (рдкрд╛рдпрдерди 3.6, рдХреЛрдИ рдЖрд╕рд╛рди рдкреНрд░рд┐рдВрдЯ рдирд╣реАрдВ, рдмрд╕ python -m werkzeug.serving app:application )

рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдХреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛:

PYTHONPATH=$PWD:$PYTHONPATH python -m myapp.entrypoints.website

_рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдКрдкрд░ рдерд╛ : рддреАрд░_рдЕрдк: _

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