{"id":731,"date":"2020-03-09T10:53:59","date_gmt":"2020-03-09T13:53:59","guid":{"rendered":"https:\/\/micheladrianomedeiros.com.br\/blog\/?p=731"},"modified":"2020-03-09T10:54:02","modified_gmt":"2020-03-09T13:54:02","slug":"devops-com-python-3","status":"publish","type":"post","link":"https:\/\/micheladrianomedeiros.com.br\/blog\/devops-com-python-3\/","title":{"rendered":"DevOps com Python #3"},"content":{"rendered":"\n<h4 class=\"wp-block-heading\"><strong>Ambientes Virtuais<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Ambientes virtuais s\u00e3o muitas\nvezes incompreendidos, porque o conceito de \u201cambientes\u201d n\u00e3o \u00e9 claro.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um ambiente Python refere-se\nao root da instala\u00e7\u00e3o do Python. Isso \u00e9 importante porque o subdiret\u00f3rio\nlib\/site-packages \u00e9 onde pacotes de terceiros s\u00e3o instalados. Nos dias de hoje\nmuitas vezes instalados via pip. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e1 outras ferramentas que s\u00e3o\nmais utilizadas que o pip, o bootstrapping pip e o vritualenv podem ser\nutilizados com o pip.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A \u00fanica alternativa comum ao\npip \u00e9 o sistema de pacotes, onde o sistema Python est\u00e1 focado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No caso de um ambiente\nAnaconda, alguns pacotes podem ser instalados como parte do Anaconda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Na verdade, esse \u00e9 um grande benef\u00edcio\ndo Anaconda: muitos pacotes Python s\u00e3o personalizados, especialmente aqueles\nque n\u00e3o s\u00e3o triviais.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um ambiente \u201creal\u201d \u00e9 aquele\nbaseado na instala\u00e7\u00e3o do Python. Isso significa que para conseguir um novo\nambiente real, n\u00f3s precisamos reinstalar (e muitas vezes reconstruir) o Python.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso algumas vezes pode ser\nmuito caro. Por exemplo, o tox reconstruir\u00e1 um ambiente a partir do zero, se\nalgum par\u00e2metro for diferente. Por essa raz\u00e3o ambientes virtuais existem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Um ambiente virtual copia o\nm\u00ednimo necess\u00e1rio do ambiente real para induzir o Python a pensar que ele tem\num novo root.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Os detalhes exatos n\u00e3o s\u00e3o\nimportantes, mas o que \u00e9 importante \u00e9 que um comando simples apenas copia\narquivos (e algumas vezes links simb\u00f3licos).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e1 dois caminhos utilizados por\nambientes virtuais: ativado e desativado. Para ordenar o uso de um ambiente virtual\ninativo, \u00e9 mais comum scripts e procedimentos autom\u00e1ticos, chamamos o Python do\nambiente virtual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso significa que se n\u00f3s criarmos\num ambiente virtual em \/home\/name\/venvs\/my-special-env, n\u00f3s podemos chamar\n\/home\/name\/venvs\/my-special-env\/bin\/python dentro desse ambiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por exemplo, \/home\/name\/venvs\/my-special-env\/bin\/python\n-m pip ir\u00e1 executar o pip para instalar no ambiente virtual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Note que para os scripts\nentry-point-based, ser\u00e3o instalados junto com o Python, ent\u00e3o n\u00f3s podemos\nexecutar \/home\/name\/venvs\/my-special-env\/bin\/pip e depois executar\n\/home\/name\/venvs\/my-special-env\/bin\/pip para instalar pacotes dentro de\nambientes virtuais.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Outro caminho para usar o ambiente\nvirtual \u00e9 o \u201cativo\u201d. Ativar um ambiente virtual em um bash-like shell significa\nfornecer seu script de ativa\u00e7\u00e3o:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">$ source\n\/home\/name\/venvs\/my-special-env\/bin\/activate<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A fonte define algumas\nvari\u00e1veis de ambiente, na qual apenas uma \u00e9 importante. A vari\u00e1vel importante \u00e9\na PATH, a qual tem prefixo \/home\/name\/venvs\/my-special-env\/bin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso significa que os comandos\ncomo o python ou pip ser\u00e3o executados primeiro. Existem duas vari\u00e1veis\ncosm\u00e9ticas que s\u00e3o definidas: VIRTUAL_ENV que ir\u00e1 apontar ao root do ambiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso \u00e9 \u00fatil em scripts de\ngerenciamento que desejam conhecer os recursos virtuais ambientes.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ambientes Virtuais Ambientes virtuais s\u00e3o muitas vezes incompreendidos, porque o conceito de \u201cambientes\u201d n\u00e3o \u00e9 claro. Um ambiente Python refere-se ao root da instala\u00e7\u00e3o do Python. Isso \u00e9 importante porque o subdiret\u00f3rio lib\/site-packages \u00e9 onde pacotes de terceiros s\u00e3o instalados. Nos dias de hoje muitas vezes instalados via pip. H\u00e1 outras ferramentas que s\u00e3o mais [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":171,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[42],"tags":[],"class_list":["post-731","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops"],"_links":{"self":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/731","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/comments?post=731"}],"version-history":[{"count":1,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/731\/revisions"}],"predecessor-version":[{"id":732,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/posts\/731\/revisions\/732"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media\/171"}],"wp:attachment":[{"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/media?parent=731"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/categories?post=731"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/micheladrianomedeiros.com.br\/blog\/wp-json\/wp\/v2\/tags?post=731"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}