Python (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Status de tradução: Esse artigo é uma tradução de Python. Data da última tradução: 2020-06-21. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Do Wikipédia:

Python é uma linguagem de programação dinâmica de alto nível, de propósito geral, interpretada e amplamente usada. Sua filosofia de design enfatiza a legibilidade do código e sua sintaxe permite que os programadores expressem conceitos em menos linhas de código do que o possível em linguagens como C++ ou Java. A linguagem fornece construções destinadas a permitir a gravação de programas claros em pequena e grande escala.
Python possui suporte a vários paradigmas de programação, incluindo programação orientada a objetos, programação imperativa e funcional ou estilos de procedimentos. Possui um sistema de tipo dinâmico e gerenciamento automático de memória e possui uma biblioteca padrão ampla e abrangente.

Instalação

Python 3

Python 3 é a versão mais recente da linguagem e é incompatível com o Python 2. A linguagem é basicamente a mesma, mas muitos detalhes, especialmente como objetos embutidos como dicionários e strings funcionam, mudaram consideravelmente e muitos recursos descontinuados finalmente foram removidos. Além disso, a biblioteca padrão foi reorganizada em alguns lugares de destaque. Para uma visão geral das diferenças, visite Python2orPython3 e os capítulos relevantes no Dive into Python 3.

Para instalar a versão mais recente do Python 3, instale o pacote python.

Se você deseja criar os candidatos a lançamento(RC) ou betas mais recentes a partir do código-fonte, visite Python Downloads. O Arch User Repository também contém bons PKGBUILDs. Se você decidir compilar o RC, observe que o binário (por padrão) é instalado em /usr/local/bin/python3.x. Como alternativa que não requer permissões de superusuário e instala no diretório pessoal do usuário, considere usar pyenv.

Python 2

Atenção: O Python 2 chegou ao fim de sua vida útil em 1º de janeiro de 2020. Muitos pacotes ainda dependem do Python 2, mas essa versão do Python não será mais mantida. Veja: Sunsetting Python 2

Para obter a versão mais recente do Python 2, instale o pacote python2.

O Python 2 será executado felizmente ao lado do Python 3. Você precisa especificar python2 para executar esta versão.

Qualquer programa que exija o Python 2 precisa apontar para /usr/bin/python2, em vez de /usr/bin/python, que aponta para o Python 3. Para fazer isso, abra o programa ou script em um editor de texto e altere a primeira linha. A linha mostrará um dos seguintes:

#!/usr/bin/env python

ou

#!/usr/bin/python

Nos dois casos, basta alterar python para python2 e o programa usará o Python 2 em vez do Python 3.

Outra maneira de forçar o uso de python2 sem alterar os scripts é chamá-lo explicitamente com python2:

$ python2 meuScript.py

Por fim, talvez você não consiga controlar as chamadas de script, mas existe uma maneira de enganar o ambiente. Funciona apenas se os scripts usarem #!/usr/bin/env python. Não funcionará com #!/usr/bin/python. Esse truque se baseia na pesquisa do env na primeira entrada correspondente na variável PATH.

Primeiro, crie uma pasta:

$ mkdir ~/bin

Em seguida, adicione um link simbólico python para python2 e os scripts de configuração:

$ ln -s /usr/bin/python2 ~/bin/python
$ ln -s /usr/bin/python2-config ~/bin/python-config

Por fim, coloque a nova pasta no início da sua variável PATH:

$ export PATH=~/bin:$PATH
Nota: Esse método de alterar variáveis de ambiente não é permanente e está ativo apenas na sessão atual do terminal.

Para verificar qual interpretador Python está sendo usado por env, use o seguinte comando:

$ which python

Uma abordagem semelhante ao enganar o ambiente, que também depende de #!/usr/bin/env python a ser chamada pelo script em questão, é usar um #Ambiente virtual.

Implementações alternativas

As seções acima se referem à implementação de referência do Python, chamada de CPython. No entanto, também existem outras implementações disponíveis - as mais populares:

  • PyPy é uma implementação Python 2.7/3.6 utilizando um compilador JIT. Geralmente é mais rápido e usa menos memória, mas não é totalmente compatível com o CPython (embora a maioria dos pacotes e códigos funcione sem alterações).
  • Jython é uma implementação do Python 2.7 construída em Java. Permite fácil integração do código Python e Java, mas não é totalmente compatível com as bibliotecas do CPython. É frequentemente usado para fornecer Python como uma linguagem de script em um aplicativo Java maior.
  • IronPython é uma implementação do Python 2.7 construída em .NET - atinge os mesmos objetivos que o Jython, mas para linguagens .NET (como C#/VB).
  • MicroPython é uma implementação limitada do Python 3.4 direcionada a microcontroladores e outros ambientes incorporados (como UEFI), mas é incompatível com a maioria dos pacotes padrão devido a mudanças menores de sintaxe e biblioteca padrão severamente limitada. É frequentemente usado para criação de protótipos em ambientes incorporados (pois fornece um Python REPL).
  • Mais implementações estão disponíveis, embora a maioria não seja mais mantida devido a melhorias nas mais populares.

Versões antigas

Atenção: As versões do Python anteriores ao 2.7 não recebem mais atualização — incluindo patches de segurança — desde pelo menos 2014. O uso de versões mais antigas para aplicações da Internet ou código não confiável pode ser perigoso e não é recomendado.

As versões antigas do Python estão disponíveis no AUR e podem ser úteis para curiosidade histórica, aplicativos antigos que não são executados nas versões atuais ou para testar programas Python destinados a serem executados em uma distribuição que vem com uma versão mais antiga:

Módulos/bibliotecas extras para versões antigas do Python podem ser encontrados no AUR pesquisando python<versão sem ponto>, por exemplo procurando por "python26" para módulos 2.6.

Gerenciamento de pacotes

Embora um grande número de pacotes Python esteja prontamente disponível nos repositórios oficiais e no AUR, o ecossistema Python fornece seus próprios gerenciadores de pacotes para uso com PyPI, o Índice de Pacotes Python:

  • pip — A ferramenta do PyPA para instalar pacotes Python.
https://pip.pypa.io/ || python-pip, python2-pip[link quebrado: package not found]
  • setuptools — Baixe, construa, instale, atualize e desinstale facilmente pacotes Python.
https://setuptools.readthedocs.io/ || python-setuptools, python2-setuptools

Para um breve histórico e comparação de recursos entre os dois, consulte pip vs easy_install. As melhores práticas de autoridade no gerenciamento de pacotes Python são detalhadas aqui.

Se você precisa usar pip, use um ambiente virtual ou pip install --user para evitar conflitos com pacotes em /usr. É sempre preferível usar o pacman para instalar softwares.

Nota: Também existem ferramentas que integram pip com pacman, gerando automaticamente PKGBUILDs para pacotes pip especificados: consulte Criando pacotes#Geradores de PKGBUILD.
Dica: pipenv[link inativo 2021-11-15 ⓘ] fornece uma única CLI para Pipfile, pip e virtualenv. Ele está disponível como python-pipenv.

Ligações de widget

As seguintes ligações para toolkit de widget estão disponíveis:

  • TkInter — Ligações para Tk
https://wiki.python.org/moin/TkInter || módulo padrão
  • pyQt — Ligações para Qt
https://riverbankcomputing.com/software/pyqt/intro || python2-pyqt4AUR python2-pyqt5[link quebrado: package not found] python-pyqt4AUR python-pyqt5
  • pySide2 — Ligações para Qt
https://wiki.qt.io/PySide2 || pyside2 pyside2-tools
  • pyGTK — Ligações para GTK 2
http://www.pygtk.org/ || pygtkAUR
  • PyGObject — Ligações para GTK 2/3 via GObject Introspection
https://wiki.gnome.org/PyGObject/ || python2-gobject2AUR python2-gobject python-gobject
  • wxPython — Ligações para wxWidgets
https://wxpython.org/ || python2-wxpython3 python-wxpython

Para usá-los com o Python, pode ser necessário instalar os kits de widgets associados.

Dicas e truques

Shells alternativos

  • bpython — Interface sofisticada para o interpretador Python.
https://bpython-interpreter.org/ || bpython bpython2AUR
  • IPython — Shell Python interativo aprimorado.
https://ipython.org/ || ipython ipython2AUR
  • Jupyter Notebook — Interface web para o IPython.
https://jupyter.org/ || jupyter-notebook
  • ptpython — Interface sofisticada para o interpretador Python baseada na interface de entrada prompt-toolkit.
https://github.com/jonathanslenders/ptpython || ptpythonAUR

Ambiente virtual

O Python fornece ferramentas para criar ambientes isolados nos quais você pode instalar pacotes sem interferir nos outros ambientes virtuais nem nos pacotes do sistema Python. Pode mudar o interpretador python usado para um aplicativo específica.

Veja Python/Virtual environment para detalhes.

Conclusão com Tab no shell do Python

Desde o Python 3.4, conclusão com Tab está ativado por padrão, no Python 2 você pode ativá-lo manualmente adicionando as seguintes linhas a um arquivo referenciado pela variável de ambiente PYTHONSTARTUP: [1]

import rlcompleter
import readline
readline.parse_and_bind("tab: complete")

Observe que o programa de conclusão "readline" só concluirá nomes no espaço para nomes global. Você pode recorrer ao python-jedi para obter uma experiência mais completa de conclusão com Tab [2].

Solução de problemas

Lidando com problema de versão em scripts de compilação

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: Este é um truque feio; em vez disso, explique como corrigir recursivamente shebangs com find e sed. (Discuss in talk:Python)

Muitos scripts de compilação de projetos supõem que python seja Python 2, e isso acabaria resultando em um erro — normalmente reclamando que print 'foo' é uma sintaxe inválida. Felizmente, muitos deles chamam python a partir da variável de ambiente PATH em vez de codificar #!/usr/bin/python na linha shebang, e os scripts Python são todos contido na árvore do projeto. Portanto, em vez de modificar os scripts de construção manualmente, há uma solução alternativa. Crie /usr/local/bin/python com conteúdo como este:

/usr/local/bin/python
#!/bin/bash
script=$(readlink -f -- "$1")
case "$script" in (/caminho/para/projeto1/*|/caminho/para/projeto2/*|/path/to/project3*)
    exec python2 "$@"
    ;;
esac

exec python3 "$@"

sendo /path/to/project1/*|/path/to/project2/*|/path/to/project3* uma lista de padrões separados por | correspondendo a todas as árvores do projeto. Para alguns scripts, o caminho pode não ser o primeiro parâmetro. Por exemplo, o Google SDK envia -S como o primeiro parâmetro. O comando readlink deve mudar para script=$(readlink -f -- "$1").

Não se esqueça de torná-lo executável. Posteriormente, os scripts nas árvores de projeto especificadas serão executados com o Python 2.

Veja também