Connexion: рдкрд╛рдЗрдк рд╕реНрдерд╛рдкрд┐рдд рдХрдиреЗрдХреНрд╢рди [рд╕реНрд╡реИрдЧрд░-рдпреВрдЖрдИ]: рдХреЛрдИ рдорд┐рд▓рд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛: рдХрдиреЗрдХреНрд╢рди [рд╕реНрд╡реИрдЧрд░-рдпреВрдЖрдИ]

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рдирд╡ре░ 2018  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: zalando/connexion

рд╡рд┐рд╡рд░рдг

рдпрд╣рд╛рдВ рд╕реВрдЪреАрдмрджреНрдз рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: https://medium.com/@ssola/build -microservices-with-python-part-3-a556a4c4bc00

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

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░

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

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░

no matches found: connexion[swagger-ui]

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

pip install connexion[swagger-ui]:

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА:

рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ:

  • python --version
    Python 3.6.7 :: Anaconda, Inc.
  • pip show connexion | grep "^Version\:"
    Version: 2.0.1

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

pip install "connexion[swagger-ui]" рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

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

рдЕрд░реЗ @mas-dse-juremigi

рдореИрдВ рдмрдЧ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рд╢реНрди:

  1. рдХреНрдпрд╛ рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкрд╛рдЗрдк рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ?
  2. рдХреНрдпрд╛ рдЖрдкрдХреЛ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ pip install connexion[tests] ?
  3. pip --version рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдХреНрдпрд╛ рд╣реИ?

рдореИрдВрдиреЗ рдЬреЛ рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рд╡рд╣ рдпрд╣рд╛рдВ рд╣реИ:

тЬФ /tmp/pip > virtualenv venv
Running virtualenv with interpreter /usr/bin/python2
New python executable in /tmp/pip/venv/bin/python2
Also creating executable in /tmp/pip/venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
тЬФ /tmp/pip > . venv/bin/activate
(venv) тЬФ /tmp/pip > pip install connexion[swagger-ui]
Collecting connexion[swagger-ui]
  Using cached https://files.pythonhosted.org/packages/0c/ad/69d7947053b960c4eb8229e01aefbd848d8a28a30972a8de52184cfde550/connexion-2.0.1-py2.py3-none-any.whl
Collecting typing>=3.6.1; python_version < "3.6" (from connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/cc/3e/29f92b7aeda5b078c86d14f550bf85cff809042e3429ace7af6193c3bc9f/typing-3.6.6-py2-none-any.whl
Collecting requests>=2.9.1 (from connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/ff/17/5cbb026005115301a8fb2f9b0e3e8d32313142fe8b617070e7baad20554f/requests-2.20.1-py2.py3-none-any.whl
Collecting clickclick>=1.2 (from connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/b6/51/2b04f7a56dcbacc0e3a7cf726e1d88d28866bf488a7a0668582306e1e643/clickclick-1.2.2-py2.py3-none-any.whl
Collecting six>=1.9 (from connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting PyYAML>=3.11 (from connexion[swagger-ui])
Collecting pathlib>=1.0.1; python_version < "3.4" (from connexion[swagger-ui])
Collecting jsonschema<3.0.0,>=2.5.1 (from connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/77/de/47e35a97b2b05c2fadbec67d44cfcdcd09b8086951b331d82de90d2912da/jsonschema-2.6.0-py2.py3-none-any.whl
Collecting flask>=0.10.1 (from connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl
Collecting inflection>=0.3.1 (from connexion[swagger-ui])
Collecting openapi-spec-validator>=0.2.4 (from connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/6e/02/8e436ff26d13dcae0f3b53acf19df7ddde91cbe0ebf98b8c37e884839253/openapi_spec_validator-0.2.4-py2-none-any.whl
Collecting swagger-ui-bundle>=0.0.2; extra == "swagger-ui" (from connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/46/fb/17cf46d8a650f3266ce46eaf6316e20288278c04d1aa3575b82581c7fb0c/swagger_ui_bundle-0.0.2-py2-none-any.whl
Collecting idna<2.8,>=2.5 (from requests>=2.9.1->connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl
Collecting urllib3<1.25,>=1.21.1 (from requests>=2.9.1->connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/62/00/ee1d7de624db8ba7090d1226aebefab96a2c71cd5cfa7629d6ad3f61b79e/urllib3-1.24.1-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests>=2.9.1->connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/56/9d/1d02dd80bc4cd955f98980f28c5ee2200e1209292d5f9e9cc8d030d18655/certifi-2018.10.15-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.9.1->connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Collecting click>=4.0 (from clickclick>=1.2->connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl
Collecting functools32; python_version == "2.7" (from jsonschema<3.0.0,>=2.5.1->connexion[swagger-ui])
Collecting Werkzeug>=0.14 (from flask>=0.10.1->connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl
Collecting Jinja2>=2.10 (from flask>=0.10.1->connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl
Collecting itsdangerous>=0.24 (from flask>=0.10.1->connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask>=0.10.1->connexion[swagger-ui])
  Using cached https://files.pythonhosted.org/packages/bc/3a/6bfd7b4b202fa33bdda8e4e3d3acc719f381fd730f9a0e7c5f34e845bd4d/MarkupSafe-1.1.0-cp27-cp27mu-manylinux1_x86_64.whl
Installing collected packages: typing, idna, urllib3, certifi, chardet, requests, PyYAML, click, clickclick, six, pathlib, functools32, jsonschema, Werkzeug, MarkupSafe, Jinja2, itsdangerous, flask, inflection, openapi-spec-validator, swagger-ui-bundle, connexion
Successfully installed Jinja2-2.10 MarkupSafe-1.1.0 PyYAML-3.13 Werkzeug-0.14.1 certifi-2018.10.15 chardet-3.0.4 click-7.0 clickclick-1.2.2 connexion-2.0.1 flask-1.0.2 functools32-3.2.3.post2 idna-2.7 inflection-0.3.1 itsdangerous-1.1.0 jsonschema-2.6.0 openapi-spec-validator-0.2.4 pathlib-1.0.1 requests-2.20.1 six-1.11.0 swagger-ui-bundle-0.0.2 typing-3.6.6 urllib3-1.24.1
(venv) тЬФ /tmp/pip > pip freeze | grep swagger
swagger-ui-bundle==0.0.2

рдЕрдирдмреНрд▓реЙрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдмрд╕ swagger-ui-bundle рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдлрд┐рд░ рднреА, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рд▓рд╛рдпрдХ рд╣реИ рдХрд┐ рдбреЙрдХреНрд╕ рдореЗрдВ рдмрддрд╛рдП рдЧрдП рддрд░реАрдХреЗ рдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рд╣рдордиреЗ рд╡рд┐рдВрдбреЛрдЬ 10 рдкрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреА рдЦреЛрдЬ рдХреАред рдореЗрд░реЗ рджреЗрд╡ рдореИрдХ рдкрд░ connexion['swagger=ui'] рдиреЗ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдХрд╛рдо рдХрд┐рдпрд╛ред

no matches found рд╕рдВрджреЗрд╢ рд╕рдВрднрд╡рддрдГ Zsh рд╢реЗрд▓ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдореЗрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдкреВрд░рд╛ рд╕рдВрджреЗрд╢ рд╣реИ (рдиреЛрдЯ zsh: рд╢реБрд░реБрдЖрдд рдореЗрдВ):

zsh: no matches found: connexion[swagger-ui]

рдпрд╣ Zsh рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдкреАрдврд╝реА рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, man zshexpn :

FILENAME GENERATION
       If a word contains an unquoted instance of one of the  characters  `*',
       `(',  `|',  `<',  `[', or `?', it is regarded as a pattern for filename
       generation, unless the GLOB option is unset. If the EXTENDED_GLOB
       option is set, the `^' and `#' characters also denote a pattern; otherтАР
       wise they are not treated specially by the shell.

рдореВрд▓ рд░реВрдк рд╕реЗ, Zsh "рдкреИрдЯрд░реНрди" рдХреЛ connexions , connexionw , connexiona рдЖрджрд┐ рдЬреИрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдореЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдиреНрдп рдЧреЛрд▓реЗ (рдпрд╛рдиреА рдмреИрд╢) рдореЗрдВ рдпрд╛ рддреЛ рдЙрд╕ рддрд░рд╣ рдХрд╛ рдирд╣реАрдВ рд╣реИ рд╡рд┐рд╕реНрддрд╛рд░ рдпрд╛ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИред Zsh рдХреЗ рд▓рд┐рдП, рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ zsh :

```
hjacobs@myрдХрдВрдкреНрдпреВрдЯрд░ :~$ zsh
mycomputer% pip рдЗрдВрд╕реНрдЯрд╛рд▓ рдХрдиреЗрдХреНрд╢рди [swagger-ui] --user
zsh: рдХреЛрдИ рдорд┐рд▓рд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛: рдХрдиреЗрдХреНрд╢рди [рд╕реНрд╡реИрдЧрд░-рдпреВрдЖрдИ]

pip install "connexion[swagger-ui]" рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛

рдХреЛрдИ рднреА рдЗрд╕реЗ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ?

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рд╣реИ?

@johanngomes рджреЗрд░ рд╕реЗ рдЙрддреНрддрд░ рджреЗрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ рдЬреЛ Google рдРрдк рдЗрдВрдЬрди (рджреВрд╕рд░реА рдкреАрдврд╝реА) рдкрд░ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред Connexion рдмрд╕ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдХрд╛рд░рдг рд╕реЗ, [swagger-ui] рдЕрддрд┐рд░рд┐рдХреНрдд рдирд╣реАрдВ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ @dtkav рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдмрд╕ рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ swagger-ui-bundle рдЬреЛрдбрд╝реЗрдВ (рд╡реИрд╕реЗ рднреА рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рд╕рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрдХреЗрдЬ рдХрд░рддрд╛ рд╣реИ)

рдЬрдм рдореИрдВ requirements.txt рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pipenv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдЖрдЙрдЯрдкреБрдЯ рдорд┐рд▓рддрд╛ рд╣реИ (рдЕрдиреНрдп рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ)

рдЖрджреЗрд╢:

pipenv lock -r
connexion[swagger-ui]==2.7.0
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

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

FRNCSCM picture FRNCSCM  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

mit2nil picture mit2nil  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ