ΠΠΎΠΏΡΡΠΊΠ° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Ρ, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ Π·Π΄Π΅ΡΡ: https://medium.com/@ssola/building -microservices-with-python-part-3-a556a4c4bc00
ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ swagger-ui pip extra
ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ swagger-ui
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
ΠΡΠΈΠ²Π΅Ρ @ mas-dse-juremigi
ΠΠ½Π΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΡ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΊ Π²Π°ΠΌ:
pip install connexion[tests]
?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
ΡΡΠΎΠ±Ρ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΡ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠΎΠΈΡ Π²ΡΡΡΠ½ΠΈΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠΏΠΎΡΠΎΠ± Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π» Π΄Π»Ρ Π²Π°Ρ.
ΠΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Windows 10. ΠΠ° ΠΌΠΎΠ΅ΠΌ Mac ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° 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
ΠΈ Ρ. Π. ΠΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, bash) Π»ΠΈΠ±ΠΎ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΠ΅ Π΅Π³ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ»Ρ Zsh ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ.
ΠΠΎΡ
ΠΎΠΆΠ΅, zsh
:
`` ''
hjacobs @ ΠΌΠΎΠΉΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ : ~ $ zsh
mycomputer% pip install ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ [swagger-ui] --user
zsh: ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ: Connexion [swagger-ui]
pip install "connexion[swagger-ui]"
Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ
ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΎ Π² ΡΠ°ΠΉΠ» ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ?
ΠΡΠΈΠ²Π΅Ρ, ΡΠ΅Π±ΡΡΠ°, ΠΊΠΎΠΌΡ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΄Π°Π»ΠΎΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ Π² ΡΠ°ΠΉΠ» ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ?
ΠΠΎΠ·Π΄Π½ΠΈΠΉ ΠΎΡΠ²Π΅Ρ [swagger-ui]
extra - Π½Π΅Ρ.
ΠΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π² @dtkav , ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ swagger-ui-bundle
Π² ΡΠ²ΠΎΠΉ ΡΠ°ΠΉΠ» ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ (ΡΡΠΎ Π²ΡΠ΅, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΠΊΠ΅Ρ ΠΏΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅)
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ pipenv
Π΄Π»Ρ ΡΠ±ΡΠΎΡΠ° ΡΠ°ΠΉΠ»Π° requirements.txt
(Π΄ΡΡΠ³ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΡΠ΄Π°Π»Π΅Π½Ρ)
ΠΠΎΠΌΠ°Π½Π΄Π°:
pipenv lock -r
connexion[swagger-ui]==2.7.0
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
pip install "connexion[swagger-ui]"
Ρ ΠΌΠ΅Π½Ρ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ