Documentação Python
Documentação Python
Release 3.13.7
3 Configurando o Python 23
3.1 Requisitos de construçã o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2 Arquivos gerados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2.1 Script configure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Opçõ es de configuraçã o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.1 Opçõ es gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3.2 Opçõ es do compilador C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.3 Opçõ es da ligaçã o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.4 Opçõ es para dependê ncias de terceiros . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3.5 Opçõ es de WebAssembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.6 Opçõ es de instalaçã o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.7 Opçõ es de desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.8 Compilaçã o de depuraçã o do Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.9 Opçõ es de depuraçã o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.3.10 Opçõ es da ligaçã o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.11 Opçõ es da biblioteca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.12 Opçõ es de segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.13 Opçõ es do macOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.14 Opçõ es do iOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.15 Opçõ es de compilaçã o cruzada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4 Sistema de Construçã o Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.1 Arquivos principais do sistema de construçã o . . . . . . . . . . . . . . . . . . . . . . . . 37
i
3.4.2 Principais etapas de construçã o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.3 Alvos principais do Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.4 Extensõ es C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.5 Sinalizadores do compilador e do vinculador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.1 Sinalizadores do pré -processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.2 Sinalizadores do compilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.5.3 Sinalizadores do vinculador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
ii
6 Utilizando Python no Android 77
6.1 Adicionando Python a uma aplicaçã o Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
6.2 Construindo um pacote Python para Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8 Editores e IDEs 87
8.1 IDLE — editor e console Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.2 Outros editores e IDEs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
A Glossário 89
iii
Índice 131
iv
Python Setup and Usage, Release 3.13.7
Esta parte da documentaçã o é dedicada a informaçõ es gerais sobre a configuraçã o do ambiente Python em diferentes
plataformas, a chamada do interpretador e outras coisas que facilitam o trabalho com o Python.
Sumário 1
Python Setup and Usage, Release 3.13.7
2 Sumário
CAPÍTULO 1
O interpretador do CPython verifica a linha de comando e o ambiente em busca de vá rias configuraçõ es.
Os esquemas de linha de comando de outras implementaçõ es podem ser diferentes. Consulte implementations para
mais recursos.
python [Link]
3
Python Setup and Usage, Release 3.13.7
Uma opçã o de interface termina a lista de opçõ es consumidas pelo interpretador, todos os argumentos consecutivos
terminam em [Link] – observe que o primeiro elemento, subscrito zero ([Link][0]) , é uma string que
reflete a fonte do programa.
-c <command>
Executa o có digo Python em command. command pode ser uma ou mais instruçõ es separadas por novas linhas,
com espaços em branco à esquerda significativos, como no có digo normal do mó dulo.
Se esta opçã o for fornecida, o primeiro elemento de [Link] será "-c" e o diretó rio atual será adicionado ao
início de [Link] (permitindo mó dulos nesse diretó rio para ser importado como mó dulos de nível superior).
Levanta um evento de auditoria cpython.run_command com o argumento command.
-m <module-name>
Procura [Link] pelo mó dulo nomeado e executa seu conteú do como o mó dulo __main__.
Como o argumento é um nome de module, você nã o deve fornecer uma extensã o de arquivo (.py). O nome do
mó dulo deve ser um nome de mó dulo Python absoluto vá lido, mas a implementaçã o nem sempre pode impor
isso (por exemplo, pode permitir que você use um nome que inclua um hífen).
Nomes de pacotes (incluindo pacotes de espaço de nomes) també m sã o permitidos. Quando um nome de
pacote é fornecido ao invé s de um mó dulo normal, o interpretador irá executar <pkg>.__main__ como o
mó dulo principal. Esse comportamento é deliberadamente semelhante ao tratamento de diretó rios e arquivos
zip que sã o passados para o interpretador como o argumento do script.
® Nota
Esta opçã o nã o pode ser usada com mó dulos embutidos e mó dulos de extensã o escritos em C, uma vez
que eles nã o possuem arquivos de mó dulo Python. No entanto, ele ainda pode ser usado para mó dulos
pré -compilados, mesmo se o arquivo fonte original nã o estiver disponível.
Se esta opçã o for fornecida, o primeiro elemento de [Link] será o caminho completo para o arquivo do
mó dulo (enquanto o arquivo do mó dulo está sendo localizado, o primeiro elemento será definido como "-m").
Como com a opçã o -c, o diretó rio atual será adicionado ao início de [Link].
A opçã o -I pode ser usada para executar o script em modo isolado onde [Link] nã o conté m nem o diretó rio
atual nem o diretó rio de pacotes de sites do usuá rio. Todas as variá veis de ambiente PYTHON* sã o ignoradas
també m.
Muitos mó dulos de biblioteca padrã o contê m có digo que é chamado em sua execuçã o como um script. Um
exemplo é o mó dulo timeit:
µ Ver também
runpy.run_module()
Funcionalidade equivalente diretamente disponível para o có digo Python
Alterado na versã o 3.1: Forneça o nome do pacote para executar um submó dulo __main__.
Alterado na versã o 3.4: pacotes de espaço de nomes també m sã o suportados
-
Lê os comandos da entrada padrã o ([Link]). Se a entrada padrã o for um terminal, -i está implícito.
Se esta opçã o for fornecida, o primeiro elemento de [Link] será "-" e o diretó rio atual será adicionado
ao início de [Link].
Levanta um evento de auditoria cpython.run_stdin sem argumentos.
<script>
Executa o có digo Python contido em script, que deve ser um caminho do sistema de arquivos (absoluto ou
relativo) referindo-se a um arquivo Python, um diretó rio contendo um arquivo __main__.py, ou um arquivo
zip contendo um arquivo __main__.py.
Se esta opçã o for fornecida, o primeiro elemento de [Link] será o nome do script conforme fornecido na
linha de comando.
Se o nome do script se referir diretamente a um arquivo Python, o diretó rio que conté m esse arquivo é adici-
onado ao início de [Link], e o arquivo é executado como o mó dulo __main__.
Se o nome do script se referir a um diretó rio ou arquivo zip, o nome do script será adicionado ao início de
[Link] e o arquivo __main__.py nesse local será executado como o mó dulo __main__.
A opçã o -I pode ser usada para executar o script em modo isolado onde [Link] nã o conté m nem o
diretó rio do script nem o diretó rio de pacotes de sites do usuá rio. Todas as variá veis de ambiente PYTHON*
sã o ignoradas també m.
Levanta um evento de auditoria cpython.run_file com o argumento filename.
µ Ver também
runpy.run_path()
Funcionalidade equivalente diretamente disponível para o có digo Python
Se nenhuma opçã o de interface for fornecida, -i está implícito, [Link][0] é uma string vazia ("") e o diretó rio
atual será adicionado ao início de [Link]. Alé m disso, o preenchimento por tab e a ediçã o do histó rico sã o
habilitados automaticamente, se disponíveis em sua plataforma (veja rlcompleter-config).
µ Ver também
tut-invoking
Alterado na versã o 3.4: Ativaçã o automá tica de preenchimento com tab e ediçã o de histó rico.
--help-all
Imprime as informaçõ es de uso completas e sai.
Adicionado na versã o 3.11.
-V
--version
Exibe o nú mero da versã o do Python e saia. O exemplo de saída poderia ser:
Python 3.8.0b2+
Quando fornecido duas vezes, exibe mais informaçõ es sobre a construçã o, como:
--check-hash-based-pycs default|always|never
Controla o comportamento de validaçã o de arquivos .pyc baseados em hash. Veja pyc-invalidation. Quando
definido como default, os arquivos de cache bytecode baseados em hash verificados e nã o verificados sã o
validados de acordo com sua semâ ntica padrã o. Quando definido como always, todos os arquivos .pyc
baseados em hash, sejam verificados ou nã o verificados, sã o validados para seus arquivos fonte correspondentes.
Quando definido como never, os arquivos .pyc baseados em hash nã o sã o validados para seus arquivos fonte
correspondentes.
A semâ ntica dos arquivos .pyc baseados em marca de tempo nã o é afetada por esta opçã o.
-d
Ativa a saída analisador sintá tico de depuraçã o (uso avançado). Consulte també m a variá vel de ambiente
PYTHONDEBUG .
Essa opçã o requer uma construção de depuração do Python, caso contrá rio, será ignorada.
-E
Ignora todas as variá veis de ambiente PYTHON*, por exemplo PYTHONPATH e PYTHONHOME, que pode ser
definido.
Veja també m as opçõ es -P e -I (isolado).
-i
Entra no modo interativo apó s a execuçã o.
Usanr a opçã o -i vai entrar no modo interativo em qualquer uma das circunstâ ncias:
• quando um script é passado como primeiro argumento
• quando a opçã o -c é usada
• quando a opçã o -m é usada
O modo interativo vai ser iniciado mesmo quando a [Link] nã o parecer ser um terminal. O arquivo
PYTHONSTARTUP nã o é lido.
Isso pode ser ú til para inspecionar variá veis globais ou um stack trace (situaçã o da pilha de execuçã o) quando
um script levanta uma exceçã o. Veja també m PYTHONINSPECT .
-I
Executa o Python no modo isolado. Isso també m implica nas opçõ es -E, -P e -s.
No modo isolado, [Link] nã o conté m o diretó rio do script nem o diretó rio de pacotes do site do usuá rio.
Todas as variá veis de ambiente PYTHON* sã o ignoradas també m. Outras restriçõ es podem ser impostas para
evitar que o usuá rio injete có digo malicioso.
Adicionado na versã o 3.4.
-O
Remova as instruçõ es de asserçã o e qualquer có digo condicional ao valor de __debug__. Aumenta o nome
do arquivo para arquivos compilados (bytecode) adicionando .opt-1 antes da extensã o .pyc (veja PEP 488).
Veja també m PYTHONOPTIMIZE.
Alterado na versã o 3.5: Modifica nomes de arquivos .pyc conforme a PEP 488.
-OO
Faz o mesmo que -O e també m descarta docstrings. Aumenta o nome do arquivo para arquivos compilados
(bytecode) adicionando .opt-2 antes da extensã o .pyc (veja PEP 488).
Alterado na versã o 3.5: Modifica nomes de arquivos .pyc conforme a PEP 488.
-P
Nã o anexa um caminho potencialmente inseguro a [Link]:
• A linha de comando python -m módulo: Nã o anexa o diretó rio atual.
• A linha de comando python [Link]: nã o anexa o diretó rio do script. Se for um link simbó lico,
resolve os links simbó licos.
• Linhas de comando python -c código e python (REPL): Nã o anexa uma string vazia, o que significa
o diretó rio de trabalho atual.
Veja també m a variá vel de ambiente PYTHONSAFEPATH e as opçõ es -E e -I (isolado).
Adicionado na versã o 3.11.
-q
Nã o exibe as mensagens de direitos autorais e de versã o nem mesmo no modo interativo.
Adicionado na versã o 3.2.
-R
Turn on hash randomization. This option only has an effect if the PYTHONHASHSEED environment variable is
set to anything other than random, since hash randomization is enabled by default.
Em versõ es anteriores do Python, esta opçã o ativa a aleatorizaçã o com hash, para que os valores __hash__()
dos objetos str e bytes sejam “salgados” com um valor aleató rio imprevisível. Embora permaneçam constantes
em um processo Python individual, eles nã o sã o previsíveis entre invocaçõ es repetidas de Python.
A aleatorizaçã o com hash se destina a fornecer proteçã o contra uma negaçã o de serviço causada por entradas
cuidadosamente escolhidas que exploram o pior caso de desempenho de uma inserçã o de dicioná rio, comple-
xidade O(n2 ). Consulte [Link] para obter detalhes.
PYTHONHASHSEED permite que você defina um valor fixo para o segredo da semente de hash.
-s
Nã o adiciona o diretório site-packages de usuário a [Link].
Veja també m PYTHONNOUSERSITE.
µ Ver também
-S
Desabilita a importaçã o do mó dulo site e as manipulaçõ es dependentes do site de [Link] que isso acar-
reta. També m desabilita essas manipulaçõ es se site for explicitamente importado mais tarde (chame site.
main() se você quiser que eles sejam acionados).
-u
Força os fluxos stdout e stderr a serem sem buffer. Esta opçã o nã o tem efeito no fluxo stdin.
Veja també m PYTHONUNBUFFERED.
Alterado na versã o 3.7: A camada de texto dos fluxos stdout e stderr agora é sem buffer.
-v
Exibe uma mensagem cada vez que um mó dulo é inicializado, mostrando o local (nome do arquivo ou mó dulo
embutido) de onde ele é carregado. Quando fornecido duas vezes (-vv), exibe uma mensagem para cada
arquivo que é verificado durante a busca por um mó dulo. També m fornece informaçõ es sobre a limpeza do
mó dulo na saída.
Alterado na versã o 3.10: O mó dulo site relata os caminhos específicos do site e os arquivos .pth sendo
processados.
Veja també m PYTHONVERBOSE.
-W arg
Controle de advertê ncia. O mecanismo de aviso do Python por padrã o exibe mensagens de aviso para sys.
stderr.
As configuraçõ es mais simples aplicam uma determinada açã o incondicionalmente a todos os avisos emitidos
por um processo (mesmo aqueles que sã o ignorados por padrã o):
Os nomes das açõ es podem ser abreviados conforme desejado e o interpretador irá resolvê -los para o nome da
açã o apropriado. Por exemplo, -Wi é o mesmo que -Wignore.
A forma completa de argumento é :
ação:mensagem:categoria:módulo:número-da-linha
Os campos vazios correspondem a todos os valores; campos vazios à direita podem ser omitidos. Por exemplo,
-W ignore::DeprecationWarning ignora todos os avisos de DeprecationWarning.
O campo action é explicado acima, mas se aplica apenas a avisos que correspondem aos campos restantes.
O campo message deve corresponder a toda a mensagem de aviso; essa correspondê ncia nã o diferencia maiú s-
culas de minú sculas.
O campo category corresponde à categoria de aviso (ex: DeprecationWarning). Deve ser um nome de
classe; o teste de correspondê ncia se a categoria de aviso real da mensagem é uma subclasse da categoria de
aviso especificada.
O campo module corresponde ao nome do mó dulo (totalmente qualificado); esta correspondê ncia diferencia
maiú sculas de minú sculas.
O campo lineno corresponde ao nú mero da linha, onde zero corresponde a todos os nú meros da linha e, por-
tanto, é equivalente a um nú mero da linha omitido.
Mú ltiplas opçõ es -W podem ser fornecidas; quando um aviso corresponde a mais de uma opçã o, a açã o para a
ú ltima opçã o correspondente é executada. As opçõ es -W invá lidas sã o ignoradas (embora, uma mensagem de
aviso seja exibida sobre opçõ es invá lidas quando o primeiro aviso for emitido).
Os avisos també m podem ser controlados usando a variá vel de ambiente PYTHONWARNINGS e de dentro de
um programa Python usando o mó dulo warnings. Por exemplo, a funçã o [Link]()
pode ser usada para usar uma expressã o regular na mensagem de aviso.
Veja warning-filter e describing-warning-filters para mais detalhes.
-x
Pula a primeira linha do có digo-fonte, permitindo o uso de formas nã o-Unix de #!cmd. Isso se destina apenas
a um hack específico do DOS.
-X
Reservado para vá rias opçõ es específicas de implementaçã o. CPython atualmente define os seguintes valores
possíveis:
• -X faulthandler para habilitar faulthandler. Veja també m PYTHONFAULTHANDLER.
Adicionado na versã o 3.3.
• -X showrefcount para emitir a contagem de referê ncias total e o nú mero de blocos de memó ria usados
quando o programa termina ou apó s cada instruçã o no interpretador interativo. Isso só funciona em
construções de depuração.
Adicionado na versã o 3.4.
• -X tracemalloc para começar a rastrear alocaçõ es de memó ria do Python usando o mó dulo
tracemalloc. Por padrã o, apenas o quadro mais recente é armazenado no traceback (situaçã o da
pilha de execuçã o) de um rastro. Use -X tracemalloc=NFRAME para iniciar o rastreamento com um
limite de traceback de quadros NFRAME. Veja o [Link]() e PYTHONTRACEMALLOC
para mais informaçõ es.
Adicionado na versã o 3.4.
• -X int_max_str_digits configura a limitaçã o de comprimento de string na conversã o para inteiro.
Veja també m PYTHONINTMAXSTRDIGITS.
Adicionado na versã o 3.11.
• -X importtime para mostrar quanto tempo leva cada importaçã o. Mostra o nome do mó dulo, tempo
cumulativo (incluindo importaçõ es aninhadas) e tempo pró prio (excluindo importaçõ es aninhadas). Ob-
serve que sua saída pode ser interrompida em aplicaçõ es multithread. O uso típico é python3 -X
importtime -c 'import asyncio'. Veja també m PYTHONPROFILEIMPORTTIME.
PYTHONSTARTUP
Se este for o nome de um arquivo legível, os comandos Python nesse arquivo serã o executados antes que o
primeiro prompt seja exibido no modo interativo. O arquivo é executado no mesmo espaço de nomes onde
os comandos interativos sã o executados para que os objetos definidos ou importados nele possam ser usados
sem qualificaçã o na sessã o interativa. Você també m pode alterar os prompts sys.ps1 e sys.ps2 e o gancho
sys.__interactivehook__ neste arquivo.
Levanta um evento de auditoria cpython.run_startup com o nome de arquivo como argumento quando
chamado na inicializaçã o.
PYTHONOPTIMIZE
Se for definido como uma string nã o vazia, é equivalente a especificar a opçã o -O. Se definido como um inteiro,
é equivalente a especificar -O vá rias vezes.
PYTHONBREAKPOINT
Se estiver definida, ela nomeia um chamá vel usando a notaçã o de caminho com pontos. O mó dulo que
conté m o chamá vel será importado e entã o o chamá vel será executado pela implementaçã o padrã o de sys.
breakpointhook() que é chamado pelo breakpoint() embutido. Se nã o for definido, ou definido como
uma string vazia, é equivalente ao valor “pdb.set_trace”. Definir isso para a string “0” faz com que a imple-
mentaçã o padrã o de [Link]() nã o faça nada alé m de retornar imediatamente.
Adicionado na versã o 3.7.
PYTHONDEBUG
Se for definido como uma string nã o vazia, é equivalente a especificar a opçã o -d. Se definido como um inteiro,
é equivalente a especificar -d vá rias vezes.
Essa variá vel de ambiente requer uma construção de depuração do Python, caso contrá rio, será ignorada.
PYTHONINSPECT
Se for definido como uma string nã o vazia, é equivalente a especificar a opçã o -i.
Esta variá vel també m pode ser modificada pelo có digo Python usando [Link] para forçar o modo de
inspeçã o no encerramento do programa.
Levanta um evento de auditoria cpython.run_stdin sem argumentos.
Alterado na versã o 3.12.5: (també m 3.11.10, 3.10.15, 3.9.20 e 3.8.20) Emite eventos de auditoria.
Alterado na versã o 3.13: Usa PyrePL, se possível, nesse caso PYTHONSTARTUP també m é executado. Emite
eventos de auditoria.
PYTHONUNBUFFERED
Se for definido como uma string nã o vazia, é equivalente a especificar a opçã o -u.
PYTHONVERBOSE
Se for definido como uma string nã o vazia, é equivalente a especificar a opçã o -v . Se definido como um inteiro,
é equivalente a especificar -v vá rias vezes.
PYTHONCASEOK
Se estiver definido, Python nã o diferencia letras maiú sculas e minú sculas nas instruçõ es import. Isso só
funciona no Windows e OS X.
PYTHONDONTWRITEBYTECODE
Se for definido como uma string nã o vazia, o Python nã o tentará escrever arquivos .pyc na importaçã o de
mó dulos fonte. Isso é equivalente a especificar a opçã o -B.
PYTHONPYCACHEPREFIX
Se estiver definido, o Python escreverá os arquivos .pyc em uma á rvore de diretó rio espelho neste caminho,
em vez de nos diretó rios __pycache__ dentro da á rvore de fontes. Isso é equivalente a especificar a opçã o
-X pycache_prefix=PATH.
PYTHONHASHSEED
Se esta variá vel nã o for definida ou definida como random, um valor aleató rio é usado para semear os hashes
de objetos str e bytes.
Se PYTHONHASHSEED for definido como um valor inteiro, ele é usado como uma semente fixa para gerar o
hash() dos tipos cobertos pela aleatorizaçã o do hash.
Sua finalidade é permitir hash repetível, como autotestes do pró prio interpretador, ou permitir que um cluster
de processos Python compartilhe valores de hash.
O nú mero inteiro deve ser um nú mero decimal no intervalo [0,4294967295]. Especificar o valor 0 desabilitará
a aleatorizaçã o de hash.
Adicionado na versã o 3.2.3.
PYTHONINTMAXSTRDIGITS
Se esta variá vel estiver definida para um inteiro, é usada para configurar a limitaçã o de comprimento de string
na conversã o para inteiro global do interpretador.
Adicionado na versã o 3.11.
PYTHONIOENCODING
Se for definido antes de executar o interpretador, ele substitui a codificaçã o usada para stdin/stdout/stderr, na
sintaxe encodingname:errorhandler. Ambas as partes encodingname e :errorhandler sã o opcio-
nais e tê m o mesmo significado que em [Link]().
Para stderr, a parte :errorhandler é ignorada; o tratador sempre será 'backslashreplace'.
Alterado na versã o 3.4: A parte encodingname é agora opcional.
Alterado na versã o 3.6: No Windows, a codificaçã o especificada por esta variá vel é ignorada para buffers de
console interativo, a menos que PYTHONLEGACYWINDOWSSTDIO també m seja especificado. Arquivos e canais
redirecionados por meio de fluxos padrã o nã o sã o afetados.
PYTHONNOUSERSITE
Se estiver definido, o Python nã o adicionará o diretório site-packages do usuário a [Link].
µ Ver também
PYTHONUSERBASE
Define o diretório base do usuário, que é usado para calcular o caminho do diretório
site-packages do usuário e caminhos de instalaçã o para python -m pip install --user.
µ Ver também
PYTHONEXECUTABLE
Se esta variá vel de ambiente for definida, [Link][0] será definido com seu valor em vez do valor obtido
atravé s do tempo de execuçã o C. Funciona apenas no macOS.
PYTHONWARNINGS
Isso é equivalente à opçã o -W . Se definido como uma string separada por vírgulas, é equivalente a especificar
-W vá rias vezes, com os filtros posteriores na lista tendo precedê ncia sobre os anteriores na lista.
As configuraçõ es mais simples aplicam uma determinada açã o incondicionalmente a todos os avisos emitidos
por um processo (mesmo aqueles que sã o ignorados por padrã o):
PYTHONMALLOCSTATS
Se definido como uma string nã o vazia, o Python exibe estatísticas do alocador de memó ria pymalloc toda vez
que uma nova arena de objeto pymalloc for criada e ao no desligamento.
Esta variá vel é ignorada se a variá vel de ambiente PYTHONMALLOC é usada para forçar o alocador malloc()
da biblioteca C, ou se Python está configurado sem suporte a pymalloc.
Alterado na versã o 3.6: Esta variá vel agora també m pode ser usada em Python compilado no modo de lança-
mento. Agora nã o tem efeito se definido como uma string vazia.
PYTHONLEGACYWINDOWSFSENCODING
Se definido como uma string nã o vazia, o modo padrã o do tratador de erros e codificação do sistema de arquivos
irá reverter para seus valores pré -3.6 de “mbcs” e “replace”, respectivamente. Caso contrá rio, os novos padrõ es
“utf-8” e “surrogatepass” serã o usados.
Isso també m pode ser habilitado em tempo de execuçã o com sys.
_enablelegacywindowsfsencoding().
Disponibilidade: Windows.
Adicionado na versã o 3.6: Veja PEP 529 para mais detalhes.
PYTHONLEGACYWINDOWSSTDIO
Se definido como uma string nã o vazia, nã o usa o novo leitor e escritor de console. Isso significa que os
caracteres Unicode serã o codificados de acordo com a pá gina de có digo do console ativo, em vez de usar utf-8.
Esta variá vel é ignorada se os fluxos padrã o forem redirecionados (para arquivos ou canais) em vez de se referir
aos buffers do console.
Disponibilidade: Windows.
Adicionado na versã o 3.6.
PYTHONCOERCECLOCALE
Se definido com o valor 0, faz com que a aplicaçã o principal de linha de comando Python ignore a coerçã o
dos có digos de idioma legados C e POSIX baseados em ASCII para uma alternativa baseada em UTF-8 mais
capaz.
Se esta variá vel não estiver definida (ou estiver definida para um valor diferente de 0), a variá vel de ambiente
de substituiçã o de localidade LC_ALL també m nã o será definida, e a localidade atual relatada para a categoria
LC_CTYPE é a localidade C padrã o, ou entã o a localidade POSIX explicitamente baseada em ASCII, entã o a
CLI do Python tentará configurar as seguintes localidades para a categoria LC_CTYPE na ordem listada antes
de carregar o tempo de execuçã o do interpretador:
• [Link]-8
• C.utf8
• UTF-8
Se a configuraçã o de uma dessas categorias de local for bem-sucedida, a variá vel de ambiente LC_CTYPE tam-
bé m será configurada de acordo no ambiente de processo atual antes que o tempo de execuçã o do Python seja
inicializado. Isso garante que, alé m de ser visto pelo pró prio interpretador e outros componentes com reconhe-
cimento de localidade em execuçã o no mesmo processo (como a biblioteca GNU readline), a configuraçã o
atualizada també m é vista em subprocessos (independentemente de ou nã o esses processos estã o executando
um interpretador Python), bem como em operaçõ es que consultam o ambiente em vez da localidade C atual
(como o [Link]() do pró prio Python).
Configurar uma dessas localidades (explicitamente ou por meio da coerçã o de localidade implícita acima)
habilita automaticamente o tratador de erros surrogateescape para [Link] e [Link] (sys.
stderr continua a usar backslashreplace como faz em qualquer outra localidade). Este comportamento
de tratamento de fluxo pode ser substituído usando PYTHONIOENCODING como de costume.
Para fins de depuraçã o, definir PYTHONCOERCECLOCALE=warn fará com que o Python emita mensagens de
aviso em stderr se a coerçã o de localidade for ativada ou se uma localidade que teria acionado a coerçã o
ainda estiver ativa quando o Python o tempo de execuçã o é inicializado.
Observe també m que mesmo quando a coerçã o de localidade está desabilitada, ou quando nã o consegue encon-
trar uma localidade de destino adequada, PYTHONUTF8 ainda será ativado por padrã o em localidades baseadas
em ASCII legadas. Ambos os recursos devem ser desabilitados para forçar o interpretador a usar ASCII ao
invé s de UTF-8 para interfaces de sistema.
Disponibilidade: Unix.
Adicionado na versã o 3.7: Veja PEP 538 para mais detalhes.
PYTHONDEVMODE
Se esta variá vel de ambiente for definida como uma string nã o vazia, habilita Modo de Desenvolvimento do
Python, introduzindo verificaçõ es adicionais de tempo de execuçã o que sã o muito caras para serem habilitadas
por padrã o. Isso é o equivalente a definir a opçã o -X dev.
Adicionado na versã o 3.7.
PYTHONUTF8
Se definido para 1, habilita o modo UTF-8 do Python.
Se definido para 0, desabilita o modo UTF-8 do Python.
Definir qualquer outra string nã o vazia causa um erro durante a inicializaçã o do interpretador.
Adicionado na versã o 3.7.
PYTHONWARNDEFAULTENCODING
Se esta variá vel de ambiente for definida como uma string nã o vazia, emite uma EncodingWarning quando
a codificaçã o padrã o específica da localidade é usada.
Veja io-encoding-warning para detalhes.
Adicionado na versã o 3.10.
PYTHONNODEBUGRANGES
Se esta variá vel estiver definida, ela desabilita a inclusã o das tabelas que mapeiam informaçõ es de localizaçã o
extra (linha final, deslocamento da coluna inicial e deslocamento da coluna final) para cada instruçã o em ob-
jetos có digo. Isso é ú til quando objetos có digo menores e arquivos pyc sã o desejados, bem como suprimir os
indicadores de localizaçã o visual extra quando o interpretador exibe tracebacks.
Adicionado na versã o 3.11.
PYTHONPERFSUPPORT
Se essa variá vel for definida como valor diferente de zero, ela habilitará suporte para o perfilador do Linux
perf para que as chamadas Python possam ser detectadas por ele.
Se definido como 0, desativa o suporte ao perfilador do Linux perf.
Consulte també m a opçã o de linha de comando -X perf e perf_profiling.
Adicionado na versã o 3.12.
PYTHON_PERF_JIT_SUPPORT
Se essa variá vel for definida como valor diferente de zero, ela habilitará suporte para o perfilador do Linux
perf para que as chamadas Python possam ser detectadas por ele usando informaçõ es de DWARF.
PYTHON_FROZEN_MODULES
Se esta variá vel for definida como on ou off, ela determina se os mó dulos congelados serã o ou nã o ignorados
pela maquiná rio de importaçã o. Um valor on significa que eles serã o importados e off significa que serã o igno-
rados. O padrã o é on para construçõ es sem depuraçã o (o caso normal) e off para construçõ es com depuraçã o.
Observe que os mó dulos congelados importlib_bootstrap e importlib_bootstrap_external sã o
sempre usados, mesmo se este sinalizador estiver definido como off.
Veja també m a opçã o de linha de comando -X frozen_modules.
Adicionado na versã o 3.13.
PYTHON_COLORS
Se esta variá vel for definida como 1, o interpretador irá colorir vá rios tipos de saída. Definir como 0 desativa
este comportamento. Veja també m Controlando cores.
Adicionado na versã o 3.13.
PYTHON_BASIC_REPL
Se esta variá vel for definida como qualquer valor, o interpretador nã o tentará carregar o REPL baseado em
Python que requer curses e readline, e em vez disso usará o REPL com o analisador sintá tico tradicional.
Adicionado na versã o 3.13.
PYTHON_HISTORY
Esta variá vel de ambiente pode ser usada para definir a localizaçã o de um arquivo .python_history (por
padrã o, é .python_history no diretó rio inicial do usuá rio).
Adicionado na versã o 3.13.
PYTHON_GIL
Se esta variá vel for definida como 1, a trava global do interpretador (GIL) será forçada. Definir como 0 força
a GIL a desligar (precisa do Python configurado com a opçã o de construçã o --disable-gil).
Veja també m a opçã o de linha de comando -X gil, que tem precedê ncia sobre esta variá vel, e whatsnew313-
-free-threaded-cpython.
Adicionado na versã o 3.13.
PYTHON_JIT
Em construçõ es onde a compilaçã o experimental just-in-time está disponível, esta variá vel pode forçar o JIT
a ser desabilitado (0) ou habilitado (1) na inicializaçã o do interpretador.
Adicionado na versã o 3.13.
Para importar um submó dulo, use pacote.módulo como valor, como em uma instruçã o de importaçã o.
Veja també m a opçã o de linha de comando -X presite, que tem precedê ncia sobre esta variá vel.
Precisa do Python configurado com a opçã o de construçã o --with-pydebug .
Adicionado na versã o 3.13.
µ Ver também
[Link]
para usuá rios Debian
[Link]
para usuá rios OpenSuse
[Link]
para usuá rios Fedora
[Link]
para usuá rios do Slackware
Instalação do IDLE
Em alguns casos, o IDLE pode nã o estar incluído em sua instalaçã o do Python.
• Para usuá rios do Debian e do Ubuntu:
19
Python Setup and Usage, Release 3.13.7
pkg_add -r python
Por exemplo, usuá rios i386 podem pegar a versã o 2.5.1 do Python usando o comando:
pkg_add [Link]
./configure
make
make install
Opções de configuração e advertê ncias para plataformas específicas do Unix estã o amplamente documentadas no
arquivo [Link] na raiz da á rvore de fontes Python.
Á Aviso
make install pode sobrescrever ou mascarar o arquivo biná rio python3. make altinstall é , portanto,
recomendado ao invé s de make install uma vez que o mesmo apenas instala o arquivo exec_prefix/bin/
pythonversion.
Arquivo/diretório Significado
exec_prefix/bin/python3 Localizaçã o recomendada do interpretador.
prefix/lib/pythonversion, A localizaçã o recomendada dos diretó rios contendo os mó dulos padrã o.
exec_prefix/lib/
pythonversion
prefix/include/ Localizaçõ es recomendadas dos diretó rios contendo os arquivos de in-
pythonversion, exec_prefix/ clusã o necessá rios para o desenvolvimento de extensõ es Python e incor-
include/pythonversion poraçã o do interpretador.
2.4 Diversos
Para usar facilmente scripts Python no Unix, você precisa torná -los executá veis, por exemplo, com
$ chmod +x script
e colocar uma linha Shebang apropriada no topo do script. Uma boa escolha normalmente é
#!/usr/bin/env python3
que procura o interpretador do Python no conjunto PATH. No entanto, alguns sistemas Unix podem nã o ter o comando
env, entã o você pode precisar codificar /usr/bin/python3 como o caminho do interpretador.
Para usar comandos Shell em seus scripts Python, veja o mó dulo subprocess.
2. Baixe, construa e instale o OpenSSL. Certifique-se de usar install_sw e nã o install. O destino
install_sw nã o substitui o [Link].
$ curl -O [Link]
$ tar xzf openssl-VERSÃO
$ pushd openssl-VERSÃO
$ ./config \
--prefix=/usr/local/custom-openssl \
--libdir=lib \
--openssldir=/etc/ssl
$ make -j1 depend
$ make -j8
$ make install_sw
$ popd
$ pushd python-3.x.x
$ ./configure -C \
--with-openssl=/usr/local/custom-openssl \
(continua na pró xima pá gina)
2.4. Diversos 21
Python Setup and Usage, Release 3.13.7
® Nota
As versõ es de patches do OpenSSL tê m uma ABI compatível com versõ es anteriores. Você nã o precisa recom-
pilar o Python para atualizar o OpenSSL. É suficiente substituir a instalaçã o personalizada do OpenSSL por uma
versã o mais recente.
Configurando o Python
23
Python Setup and Usage, Release 3.13.7
make regen-all
make regen-stdlib-module-names
make regen-limited-abi
make regen-configure
O arquivo [Link] documenta os arquivos gerados, suas entradas e ferramentas usadas para regenerá -los.
Procure por alvos regen-* de make.
Os arquivos gerados podem mudar dependendo das versõ es exatas do autoconf-archive, aclocal e
pkg-config.
./configure --help
--enable-pystats
Ativa a coleta de estatísticas internas de desempenho do Python.
Por padrã o, a coleta de estatísticas está desativada. Use o comando python3 -X pystats ou defina a va-
riá vel de ambiente PYTHONSTATS=1 para ativar a coleta de estatísticas na inicializaçã o do Python.
Na saída do Python, despeja as estatísticas se a coleta de estatísticas estiver ativada e nã o apagada.
Efeitos:
• Adiciona a opçã o de linha de comando -X pystats.
• Adiciona a variá vel de ambiente PYTHONSTATS.
• Define a macro Py_STATS.
• Adiciona funçõ es ao mó dulo sys:
– sys._stats_on(): Ativa a coleta de estatísticas.
– sys._stats_off(): Desativa a coleta de estatísticas.
– sys._stats_clear(): Apaga as estatísticas.
– sys._stats_dump(): Despeja as estatísticas no arquivo e apaga as estatísticas.
As estatísticas serã o despejadas em um arquivo arbitrá rio (provavelmente ú nico) em /tmp/py_stats/ (Unix)
ou C:\temp\py_stats\ (Windows). Se aquele diretó rio nã o existir, os resultados serã o enviados para stderr.
Use Tools/scripts/summarize_stats.py para ler as estatísticas.
Estatísticas:
• Có digo de operaçã o:
– Especializaçã o: sucesso, fracasso, acerto, adiado, erro, deopt, falhas;
– Contagem de execuçõ es;
– Contagem em pares.
• Chamada:
– Chamadas Python em linha;
– Chamadas a PyEval;
– Quadros enviados;
– Objetos quadro criados;
– Chamadas de Eval: vetor, gerador, legado, funçã o VECTORCALL, classe de construçã o, slot, fun-
çã o “ex”, API, mé todo.
• Objeto:
– incref e decref;
– incref e decref do interpretador;
– alocaçõ es: tudo, 512 bytes, 4 kiB, big;
– memó ria livre;
– listas de memó ria livre para/de;
– Dicioná rio materializado/desmaterializado;
– cache de tipo;
– tentativas de otimizaçã o;
– rastros de otimizaçã o criados/executados;
– uops executados.
• Coletor de lixo:
– Coletas de lixo;
– Objetos visitados;
– Objetos coletados.
Adicionado na versã o 3.11.
--disable-gil
Habilita suporte experimental para execuçã o de Python sem a trava global do interpretador (GIL): construçã o
de com threads livres.
Define a macro Py_GIL_DISABLED e adiciona "t" a [Link].
Veja whatsnew313-free-threaded-cpython para mais detalhes.
Adicionado na versã o 3.13.
--enable-experimental-jit=[no|yes|yes-off|interpreter]
Indica como integrar o compilador JIT.
• no - constró i o interpretador sem o JIT.
• yes - constró i o interpretador com o JIT.
• yes-off - constró i o interpretador com o JIT, mas desabilitado por padrã o.
• interpreter - constró i o interpretador sem o JIT, mas com o interpretador habilitado para nível 2.
Por convençã o, --enable-experimental-jit é uma abreviaçã o de
--enable-experimental-jit=yes.
® Nota
Ao construir o CPython com o JIT habilitado, certifique-se de que seu sistema tenha o Python 3.11 ou
posterior instalado.
PKG_CONFIG_PATH
Opçõ es do pkg-config.
BZIP2_LIBS
Sinalizadores de compilador C e vinculador para vincular Python a libbz2, usados pelo mó dulo bz2, subs-
tituindo pkg-config.
CURSES_CFLAGS
CURSES_LIBS
Sinalizadores de compilador C e vinculador para libncurses ou libncursesw, usados pelo mó dulo
curses, substituindo pkg-config.
GDBM_CFLAGS
GDBM_LIBS
Sinalizadores de compilador C e vinculador para gdbm.
LIBB2_CFLAGS
LIBB2_LIBS
Sinalizadores de compilador C e vinculador para libb2 (BLAKE2), usados pelo mó dulo hashlib, substi-
tuindo pkg-config.
LIBEDIT_CFLAGS
LIBEDIT_LIBS
Sinalizadores de compilador C e vinculador para libedit, usados pelo mó dulo readline, substituindo
pkg-config.
LIBFFI_CFLAGS
LIBFFI_LIBS
Sinalizadores de compilador C e vinculador para libffi, usados pelo mó dulo ctypes, substituindo
pkg-config.
LIBMPDEC_CFLAGS
LIBMPDEC_LIBS
Sinalizadores de compilador C e vinculador para libmpdec, usados pelo mó dulo decimal, substituindo
pkg-config.
® Nota
Estas variá veis de ambiente nã o tê m efeito a menos que --with-system-libmpdec seja especificado.
LIBLZMA_CFLAGS
LIBLZMA_LIBS
Sinalizadores de compilador C e vinculador para liblzma, usados pelo mó dulo lzma, substituindo
pkg-config.
LIBREADLINE_CFLAGS
LIBREADLINE_LIBS
Sinalizadores de compilador C e vinculador para libreadline, usados pelo mó dulo readline, substituindo
pkg-config.
LIBSQLITE3_CFLAGS
LIBSQLITE3_LIBS
Sinalizadores de compilador C e vinculador para libsqlite3, usados pelo mó dulo sqlite3, substituindo
pkg-config.
LIBUUID_CFLAGS
LIBUUID_LIBS
Sinalizadores de compilador C e vinculador para libuuid, usados pelo mó dulo uuid, substituindo
pkg-config.
PANEL_CFLAGS
PANEL_LIBS
Sinalizadores de compilador C e vinculador para PANEL, substituindo pkg-config.
Sinalizadores de compilador C e vinculador para libpanel ou libpanelw, usados pelo mó dulo curses.
panel, substituindo pkg-config.
TCLTK_CFLAGS
TCLTK_LIBS
Sinalizadores de compilador C e vinculador para TCLTK, substituindo pkg-config.;
ZLIB_CFLAGS
ZLIB_LIBS
Sinalizadores de compilador C e vinculador para libzlib, usados pelo mó dulo gzip, substituindo
pkg-config.
® Nota
Durante a construçã o, você poderá encontrar avisos do compilador sobre a indisponibilidade de dados
de perfil para alguns arquivos fonte. Esses avisos sã o inofensivos, pois apenas um subconjunto do có -
digo é exercido durante a aquisiçã o de dados de perfil. Para desativar esses avisos no Clang, suprima-os
manualmente adicionando -Wno-profile-instr-unprofiled a CFLAGS.
--enable-profiling
Habilita o perfil de có digo a nível C com gprof (desabilitado por padrã o).
--with-strict-overflow
Adiciona -fstrict-overflow aos sinalizadores do compilador C (por padrã o adicionamos
-fno-strict-overflow).
µ Ver também
LIBMPDEC_CFLAGS e LIBMPDEC_LIBS.
--with-readline=readline|editline
Designa uma biblioteca backend para o mó dulo readline.
• readline: Usa readline como o backend.
• editline: Usa editline como o backend.
Adicionado na versã o 3.10.
--without-readline
Nã o constró i o mó dulo readline (construído por padrã o).
Nã o define a macro HAVE_LIBREADLINE.
Adicionado na versã o 3.10.
--with-libm=STRING
Substitui a biblioteca matemá tica libm por STRING (o padrã o depende do sistema).
--with-libc=STRING
Substitui a biblioteca C libc por STRING (o padrã o depende do sistema).
--with-openssl=DIR
Raiz do diretó rio OpenSSL.
Adicionado na versã o 3.7.
--with-openssl-rpath=[no|auto|DIR]
Define o diretó rio da biblioteca de tempo de execuçã o (rpath) para bibliotecas OpenSSL:
• no (padrã o): nã o define o rpath;
• auto: detecta automaticamente o rpath de --with-openssl e pkg-config;
• DIR: define um rpath explícito.
Adicionado na versã o 3.10.
--enable-universalsdk=SDKDIR
Cria uma construçã o biná ria universal. SDKDIR especifica qual SDK do macOS deve ser usado para executar
a construçã o (o padrã o é nã o).
--enable-framework
--enable-framework=INSTALLDIR
Cria um [Link] em vez de uma instalaçã o tradicional do Unix. O INSTALLDIR opcional especifica
o caminho de instalaçã o (o padrã o é nã o).
--with-universal-archs=ARCH
Especifica o tipo de biná rio universal que deve ser criado. Esta opçã o só é vá lida quando
--enable-universalsdk está definido.
Opçõ es:
--with-app-store-compliance=PATCH-FILE
A biblioteca padrã o do Python conté m strings que sã o conhecidas por acionar erros de ferramentas de inspeçã o
automatizadas quando enviadas para distribuiçã o pelas App Stores do macOS e do iOS. Se ativada, esta opçã o
aplicará a lista de patches que corrigem a conformidade da app store. Um arquivo de patch personalizado
també m pode ser especificado. Esta opçã o está desativada por padrã o.
Adicionado na versã o 3.13.
CONFIG_SITE=file
Uma variá vel de ambiente que aponta para um arquivo com substituiçõ es de configuraçã o.
Exemplo de arquivo [Link]:
# [Link]-aarch64
ac_cv_buggy_getaddrinfo=no
ac_cv_file__dev_ptmx=yes
ac_cv_file__dev_ptc=no
HOSTRUNNER
Programa para executar CPython para a plataforma host para compilaçã o cruzada.
Adicionado na versã o 3.11.
Exemplo de compilaçã o cruzada:
CONFIG_SITE=[Link]-aarch64 ../configure \
--build=x86_64-pc-linux-gnu \
--host=aarch64-unknown-linux-gnu \
--with-build-python=../x86_64/python
necessá rias para detectar corretamente todos os alvos que precisam ser reconstruídos. Dependendo de quais des-
tinos nã o sã o reconstruídos, você poderá enfrentar vá rios problemas. Se você tiver problemas de construçã o ou
teste que você nã o pode explicar de outra forma, make clean && make deve resolver a maioria dos problemas de
dependê ncia, à s custas de tempos de construçã o mais longos.
make platform
Constró i o programa python, mas nã o constró i os mó dulos de extensã o da biblioteca padrã o. Isto gera um arquivo
chamado platform que conté m uma ú nica linha descrevendo os detalhes da plataforma de construçã o, por exemplo,
macosx-14.3-arm64-3.12 ou linux-x86_64-3.13.
make profile-opt
Constró i Python usando otimizaçã o guiada por perfil (PGO). Você pode usar a opçã o --enable-optimizations
do configure para tornar este o alvo padrã o do comando make (make all ou apenas make).
make clean
Remove arquivos construídos.
make distclean
Alé m do trabalho feito por make clean, remove os arquivos criados pelo script configure. configure terá que ser
executado antes de construir novamente.1
make install
Constró i o alvo all e instala o Python.
make test
Constró i o alvo all e execute o conjunto de testes Python com a opçã o --fast-ci. Variá veis:
• TESTOPTS: opçõ es adicionais de linha de comando regrtest.
• TESTPYTHONOPTS: opçõ es adicionais de linha de comando do Python.
• TESTTIMEOUT: tempo limite em segundos (padrã o: 10 minutos).
make buildbottest
Isto é semelhante ao make test, mas usa a opçã o --slow-ci e o tempo limite padrã o de 20 minutos, em vez da
opçã o --fast-ci.
make regen-all
Gera novamente (quase) todos os arquivos gerados. Isso inclui (mas nã o está limitado a) casos de bytecode e ar-
quivo gerador de analisador sintá tico. make regen-stdlib-module-names e autoconf devem ser executados
separadamente para os restantes arquivos gerados.
3.4.4 Extensões C
Algumas extensõ es C sã o construídas como mó dulos embutidos, como o mó dulo sys. Eles sã o construídos com a
macro Py_BUILD_CORE_BUILTIN definida. Mó dulos embutidos nã o possuem nenhum atributo __file__:
1 git clean -fdx é uma maneira ainda mais extrema de “limpar” seu checkout. Ele remove todos os arquivos nã o conhecidos pelo Git.
Ao procurar bugs usando git bisect, isso é recomendado entre testes para garantir uma construçã o completamente limpa. Use com cuidado,
pois isso excluirá todos os arquivos nã o registrados no Git, incluindo seu trabalho novo e nã o confirmado.
Outras extensõ es C sã o construídas como bibliotecas dinâ micas, como o mó dulo _asyncio. Eles sã o construídos
com a macro Py_BUILD_CORE_MODULE definida. Exemplo no Linux x86-64:
>>> _asyncio.__file__
'/usr/lib64/python3.9/lib-dynload/_asyncio.cpython-39-x86_64-[Link]'
Modules/Setup é usado para gerar alvos Makefile para construir extensõ es C. No início dos arquivos, as extensõ es
C sã o construídas como mó dulos embutidos. Extensõ es definidas apó s o marcador *shared* sã o construídas como
bibliotecas dinâ micas.
As macros PyAPI_FUNC(), PyAPI_DATA() e PyMODINIT_FUNC de Include/exports.h sã o definidas de forma
diferente dependendo se a macro Py_BUILD_CORE_MODULE está definida:
• Usa Py_EXPORTED_SYMBOL se Py_BUILD_CORE_MODULE estiver definido
• Do contrá rio, usa Py_IMPORTED_SYMBOL.
Se a macro Py_BUILD_CORE_BUILTIN for usada por engano em uma extensã o C construída como uma biblioteca
compartilhada, sua funçã o PyInit_xxx() nã o será exportada, causando um ImportError na importaçã o.
CFLAGSFORSHARED
Sinalizadores extras de C adicionados para construir os arquivos de objeto do interpretador.
Padrã o: $(CCSHARED) quando --enable-shared é usado, ou uma string vazia caso contrá rio.
PY_CFLAGS
Padrã o: $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS).
PY_CFLAGS_NODIST
Padrã o: $(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal.
Adicionado na versã o 3.5.
PY_STDMODULE_CFLAGS
Sinalizadores do C usados para construir os arquivos de objeto do interpretador.
Padrã o: $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED).
Adicionado na versã o 3.7.
PY_CORE_CFLAGS
Padrã o: $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE.
Adicionado na versã o 3.2.
PY_BUILTIN_MODULE_CFLAGS
Sinalizadores do compilador para construir um mó dulo de extensã o de biblioteca padrã o como um mó dulo
embutido, como o mó dulo posix.
Padrã o: $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN.
Adicionado na versã o 3.8.
PURIFY
Comando de Purify. Purify é um programa depurador de memó ria.
Padrã o: string vazia (nã o usada).
LDFLAGS
Sinalizadores do vinculador, [Link]. -Llib_dir, se você tiver bibliotecas em um diretó rio nã o padrã o lib_dir.
Tanto CPPFLAGS quanto LDFLAGS precisam conter o valor do shell para poder construir mó dulos de extensã o
usando os diretó rios especificados nas variá veis de ambiente.
LIBS
Sinalizadores do vinculador para passar bibliotecas para o vinculador ao vincular o executá vel Python.
Exemplo: -lrt.
LDSHARED
Comando para construir uma biblioteca compartilhada.
Padrã o: @LDSHARED@ $(PY_LDFLAGS).
BLDSHARED
Comando para construir a biblioteca compartilhada libpython.
Padrã o: @BLDSHARED@ $(PY_CORE_LDFLAGS).
PY_LDFLAGS
Padrã o: $(CONFIGURE_LDFLAGS) $(LDFLAGS).
PY_LDFLAGS_NODIST
Padrã o: $(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST).
Adicionado na versã o 3.8.
PY_CORE_LDFLAGS
Sinalizadores de vinculador usados para construir os arquivos de objeto do interpretador.
Adicionado na versã o 3.8.
Este documento pretende dar uma visã o geral do comportamento específico do Windows que você deve conhecer
quando fores utilizar o Python no sistema operacional Microsoft Windows.
Diferente da maioria dos sistemas e serviços Unix, o Windows nã o inclui uma instalaçã o suportada do Python. Para
deixar o Python disponível, o time CPython compilou os instaladores do Windows com cada versã o por vá rios anos.
Esses instaladores tê m a intençã o primá ria de adicionar uma instalaçã o de Python por usuá rio, com o interpretador
e as bibliotecas nú cleo sendo utilizadas por um ú nico usuá rio. O instalador també m é capaz de instalar para todos os
usuá rios de uma ú nica má quina, e um arquivo ZIP separado está disponível para distribuiçõ es locais de aplicaçã o.
Como especificado na PEP 11, uma versã o Python suporta apenas uma plataforma Windows enquanto a Microsoft
considera a plataforma sob suporte estendido. Isso significa que o Python 3.13 suporta Windows 8.1 ou superiores.
Se você requer suporte à Windows 7, por favor instale o Python 3.8.
Há uma quantidade de instaladores diferentes disponíveis para Windows, cada um com algumas vantagens e desvan-
tagens.
O instalador completo conté m todos os componentes e é a melhor opçã o para desenvolvedores usando Python para
qualquer tipo de projeto.
O pacote Microsoft Store é uma instalaçã o simples do Python que é adequada para executar scripts e pacotes, e para
usar a IDLE ou outros ambientes de desenvolvimento. Ela requer Windows 10 e superior, mas pode ser instalada de
forma segura sem corromper outros programas. Ela també m fornece vá rios comandos convenientes para iniciar o
Python e suas ferramentas.
Os pacotes [Link] sã o instalaçõ es leves criadas para integraçã o contínua de sistemas. Elas podem ser usadas para
construir pacotes Python ou executar scripts, mas nã o sã o atualizá veis e nã o possuem ferramentas de interface de
usuá rio.
O pacote embutível é um pacote mínimo de Python adequado para ser incorporado em uma aplicaçã o maior.
43
Python Setup and Usage, Release 3.13.7
Nome Descrição
/passive para exibir o progresso sem exigir interaçã o do usuá rio
/quiet para instalar/desinstalar sem exibir nenhuma UI
/simple para evitar a personalizaçã o do usuá rio
/uninstall para remover o Python (sem exigir confirmaçã o)
/layout [diretó rio] para pré -baixar todos os componentes
/log [nome-de-arquivo] para especificar a localizaçã o dos arquivos de log
Todas as outras opçõ es sã o passadas como name=value, onde o valor é usualmente 0 para desabilitar o recurso, 1
para ativar o recurso, ou um caminho. A lista completa de opçõ es disponíveis é mostrada abaixo.
Por exemplo, para instalar silenciosamente uma instalaçã o de Python padrã o e em todo o sistema, você pode usar o
seguinte comando (a partir de um terminal de comando autorizado):
Para permitir que usuá rios instalem facilmente uma có pia do Python sem a suíte de testes, você pode fornecer um
atalho com o seguinte comando. Isso irá exibir uma pá gina inicial simplificado e bloquear a personalizaçã o:
(Observe que omitir o inicializador també m omite associaçõ es de arquivos, e só é recomendado para instalaçõ es por
usuá rios quando també m existe uma instalaçã o por todo o sistema que inclui o inicializador.)
As opçõ es listadas acima també m podem ser fornecidas em um arquivo chamado [Link] juntamente com
o executá vel. Esse arquivo especifica uma lista de opçõ es e valores. Quando um valor é fornecido como um atributo,
ele será convertido para um nú mero se possível. Valores fornecidos como elementos de texto sã o sempre deixados
como strings. Esse arquivo de exemplo define as mesmas opçõ es que o exemplo anterior:
<Options>
<Option Name="InstallAllUsers" Value="no" />
<Option Name="Include_launcher" Value="0" />
<Option Name="Include_test" Value="no" />
<Option Name="SimpleInstall" Value="yes" />
<Option Name="SimpleInstallDescription">Just for me, no test suite</Option>
</Options>
Você també m pode especificar a opçã o /quiet para esconder o acompanhamento de progresso.
® Nota
Tudo descrito nesta seçã o é considerado experimental e espera-se que mude em versõ es futuras.
Para instalar biná rios pré -construídos com recurso de threads livres habilitado (veja PEP 703), você deve selecionar
“Customize installation” (Instalaçã o personalizada). A segunda pá gina de opçõ es inclui a caixa de seleçã o “Download
free-threaded binaries” (Baixar biná rios de threads livres).
Selecionar esta opçã o fará o download e instalará biná rios adicionais no mesmo local da instalaçã o principal do
Python. O executá vel principal é chamado [Link], e outros biná rios recebem um sufixo t ou um sufixo
ABI completo. Arquivos de origem do Python e dependê ncias de terceiros empacotadas sã o compartilhadas com a
instalaçã o principal.
A versã o com threads livres é registrada como uma instalaçã o regular do Python com a tag 3.13t (com um sufixo -32
ou -arm64 como normal para essas plataformas). Isso permite que as ferramentas o descubram e que o Inicializador
Python para Windows ofereça suporte a [Link] -3.13t. Observe que o inicializador interpretará [Link] -3
(ou um shebang python3) como “a instalaçã o 3.x mais recente”, que preferirá os biná rios com threads livres aos
normais, enquanto [Link] -3.13 nã o. Se você usar o estilo curto da opçã o, talvez prefira nã o instalar os biná rios
com threads livres neste momento.
Para especificar a opçã o de instalaçã o na linha de comando, use Include_freethreaded=1. Veja Instalando
Sem Download para instruçõ es sobre como baixar preventivamente os biná rios adicionais para instalaçã o offline. As
opçõ es para incluir símbolos de depuraçã o e biná rios també m se aplicam à s construçõ es com threads livres.
Biná rios com threads livres també m estã o disponíveis em [Link].
Á Aviso
Python sempre estará disponível gratuitamente na Microsoft Store. Se você for solicitado a pagar por ele, você
nã o selecionou o pacote correto.
Apó s a instalaçã o, o Python pode ser inicializado por pesquisa no menu Iniciar. Alternativamente, ele estará dispo-
nível a partir de qualquer Prompt de Comando ou sessã o PowerShell apenas digitando python. Alé m disso, o pip e
a IDLE podem ser usados digitando pip ou idle. A IDLE també m pode ser encontrada no menu Iniciar.
Todos os trê s comandos també m estã o disponíveis com sufixos do nú mero da versã o, por exemplo, como em
[Link] e [Link] bem como [Link] (onde 3.x é a versã o específica que você quer ini-
ciar, como a 3.13). Abra o “Gerenciar aliases de execuçã o de aplicativo” atravé s do menu Iniciar para selecionar
qual versã o do Python está associada com cada comando. É recomendado que você se certifique que pip e idle
sã o consistentes com qualquer versã o do python que seja selecionada.
Ambientes virtuais podem ser criados com python -m venv e ativados e usados normalmente.
Se você instalou outra versã o do Python e adicionou ela à sua variá vel PATH, ela estará disponível com [Link]
ao invé s de uma instalada pela Microsoft Store. Para acessar a nova instalaçã o, use [Link] ou python3.x.
exe.
O instalador [Link] irá detectar essa instalaçã o do Python, mas irá preferir instalaçõ es feitas pelo instalador tradi-
cional.
Para remover o Python, abra as Configuraçõ es e use Aplicativos e Recursos, ou encontre o Python no menu Iniciar
e clique com o botã o direito para selecionar Desinstalar. A desinstalaçã o irá remover todos os pacotes que você
instalou diretamente dentro dessa instalaçã o do Python, mas nã o irá remover nenhum ambiente virtual.
Ao ler arquivos, o Windows retornará o arquivo da pasta privada ou, se nã o existir, o diretó rio real do Windows.
Por exemplo, ler C:\Windows\System32 retorna o conteú do de C:\Windows\System32 mais o conteú do de
C:\Program Files\WindowsApps \nome_pacote\VFS\SystemX86.
Você pode encontrar o caminho real de qualquer arquivo existente usando [Link]():
>>> import os
>>> test_file = 'C:\\Users\\exemplo\\AppData\\Local\\[Link]'
>>> [Link](test_file)
(continua na pró xima pá gina)
Para selecionar uma versã o específica, adicione -Version 3.x.y. O diretó rio de saída pode ser mudado de ., e
o pacote será instalado em um subdiretó rio. Por padrã o, o subdiretó rio é nomeado igual ao pacote, e sem a opçã o
-ExcludeVersion esse nome irá incluir a versã o específica instalada. Dentro do subdiretó rio está um diretó rio
tools que conté m a instalaçã o do Python:
# Sem -ExcludeVersion
> .\python.3.5.2\tools\[Link] -V
Python 3.5.2
# Com -ExcludeVersion
> .\python\tools\[Link] -V
Python 3.5.2
Em geral, pacotes nuget nã o sã o atualizá veis, e novas versõ es devem ser instaladas lado-a-lado e referenciadas usando
o caminho completo. Alternativamente, delete o diretó rio do pacote manualmente e instale novamente. Muitos
sistemas CI irã o fazer isso automaticamente se eles nã o preservam arquivos entre construçõ es de projetos.
Juntamente com o diretó rio tools está o diretó rio build\native. Ele conté m um arquivo de propriedades MS-
Build [Link] que pode ser usado em um projeto C++ para referenciar a instalaçã o do Python. Incluir as
configuraçõ es irá automaticamente usar os cabeçalhos e importar as bibliotecas na sua construçã o de projeto.
As pá ginas de informaçã o dos pacotes em [Link] sã o [Link]/packages/python para a versã o 64 bits,
[Link]/packages/pythonx86 para a versã o 32 bits e [Link]/packages/pythonarm64 para a versã o
ARM64
® Nota
Tudo descrito nesta seçã o é considerado experimental e espera-se que mude em versõ es futuras.
Pacotes contendo biná rios com threads livres sã o chamados python-freethreaded para a versã o de 64 bits, pythonx86-
-freethreaded para a versã o de 32 bits e pythonarm64-freethreaded para a versã o ARM64. Esses dois pacotes contê m
os pontos de entrada [Link] e [Link], os quais sã o executados com threads livres.
® Nota
Pacotes de terceiros devem ser instalados pelo instalador da aplicaçã o juntamente com a distribuiçã o embutida. Usar
o pip para gerenciar as dependê ncias como em uma instalaçã o regular do Python nã o é suportado nessa distribuiçã o,
apesar de que com algum cuidado pode ser possível incluir e usar o pip para atualizaçõ es automá ticas. Em geral,
pacotes de terceiros devem ser tratados como parte da aplicaçã o (“vendoring”) para que o desenvolvedor consiga
garantir compatibilidade com versõ es mais recentes antes de fornecer atualizaçõ es para os usuá rios.
Os dois casos de uso recomendados para essa distribuiçã o sã o descritos abaixo.
mazenados em outras localidades já que há uma oportunidade de especificar o caminho de busca antes de executar
a aplicaçã o.
Essas mudanças serã o aplicadas em quaisquer comandos posteriores que forem executados neste console, e serã o
herdadas por quaisquer aplicaçõ es iniciadas pelo console.
Incluir o nome da variá vel com sinais de porcentagem irá expandir o valor existente, permitindo que você adicione
seu novo valor ao início ou final. Modificar o PATH adicionando o diretó rio contendo [Link] ao início é o
modo mais comum de garantir que a versã o correta do Python seja iniciada.
Para modificar permanentemente as variá veis de ambiente padrã o, clique em Iniciar e procure por ‘Editar as variá veis
de ambiente do sistema‘, ou abra as propriedades do Sistema, Configurações avançadas do sistema e clique no botã o
Variáveis de Ambiente. Neste diá logo, você pode adicionar ou modificar as variá veis de Usuá rio ou Sistema. Para
mudar as variá veis do Sistema, você precisa de acesso nã o-restrito à sua má quina (isto é , direitos de Administrador).
® Nota
O Windows irá concatenar as variá veis de Usuá rio após as variá veis de Sistema, o que pode causar resultados
inesperados quando modificando o PATH.
A variá vel PYTHONPATH é usada por todas as versõ es do Python, portanto, você nã o deve configurá -la permanen-
temente, a menos que os caminhos listados incluam apenas có digo compatível com todas as versõ es instaladas
do Python.
µ Ver também
[Link]
Visã o geral das variá veis de ambiente no Windows
[Link]
O comando set, para modificar temporariamente as variá veis de ambiente
[Link]
O comando setx, para modificar permanentemente as variá veis de ambiente
Você pode usar o Modo UTF-8 do Python para alterar a codificaçã o de texto padrã o para UTF-8. Você pode habilitar
Modo UTF-8 do Python atravé s da opçã o de linha de comando -X utf8 ou da variá vel de ambiente PYTHONUTF8=1.
Veja PYTHONUTF8 para habilitar o modo UTF-8, e Excursus: Configurando variáveis de ambiente para saber como
modificar variá veis de ambiente.
Quando o Modo UTF-8 do Python está habilitado, você ainda pode usar a codificaçã o do sistema (a pá gina de có digo
ANSI) atravé s do codec “mbcs”.
Observe que adicionar PYTHONUTF8=1 à s variá veis de ambiente padrã o afetará todas as aplicaçõ es Python 3.7+ em
seu sistema. Se você tiver aplicaçõ es Python 3.7+ que dependem da codificaçã o do sistema legado, é recomendá vel
definir a variá vel de ambiente temporariamente ou usar a opçã o de linha de comando -X utf8.
® Nota
Mesmo quando o modo UTF-8 está desativado, o Python usa o UTF-8 por padrã o no Windows para:
• E/S do console, incluindo E/S padrã o (consulte PEP 528 para detalhes).
• A codificação do sistema de arquivos (veja a PEP 529 para detalhes).
4.8.1 Começando
Pela linha de comando
Alterado na versã o 3.6.
Instalaçõ es globais no sistema do Python 3.3 ou posterior irã o colocar o inicializador no seu PATH. O inicializador é
compatível com todas as versõ es disponíveis do Python, entã o nã o importa qual versã o está instalada. Para verificar
se o inicializador está disponível, execute o seguinte comando no Prompt de Comando:
py
Você deve perceber que a ú ltima versã o do Python que você tem é iniciada - ela pode ser fechada normalmente, e
qualquer argumento da linha de comando adicional especificado será enviado diretamente para o Python.
Se você tem mú ltiplas versõ es do Python instaladas (por exemplo, 3.7 e 3.13) você deve ter notado que o Python
3.13 foi iniciado – para iniciar o Python 3.7, use o comando:
py -3.7
Se você quer a versã o mais recente do Python 2 que você tem instalada, tente o comando:
py -2
O comando:
py --list
A forma abreviada do argumento (-3) só seleciona a partir de versõ es principais do Python, e nã o de outras distri-
buiçõ es. No entanto, a forma mais longa (-V:3) selecionará qualquer um.
A Empresa é correspondida na string completa, sem distinçã o entre maiú sculas e minú sculas. A Tag corresponde a
uma string completa ou a um prefixo, desde que o pró ximo caractere seja um ponto ou um hífen. Isso permite que
-V:3.1 corresponda a 3.1-32, mas nã o a 3.10. As tags sã o classificadas usando ordenaçã o numé rica (3.10 é mais
recente que 3.1), mas sã o comparadas usando texto (-V:3.01 nã o corresponde a 3.1).
Ambientes virtuais
Adicionado na versã o 3.5.
Se o inicializador é executado sem versã o explícita do Python especificada, e um ambiente virtual (criado com o
mó dulo da biblioteca padrã o venv ou da ferramenta externa virtualenv) está ativo, o inicializador irá executar o
interpretador do ambiente virtual ao invé s do global. Para executar o interpretador global, ou desative o ambiente
virtual, ou explicitamente especifique a versã o global do Python.
Por um script
Vamos criar um script teste de Python - crie um arquivo chamado [Link] com os seguintes conteú dos:
#! python
import sys
[Link]("olá do Python %s\n" % ([Link],))
py [Link]
Você deve notar que o nú mero da versã o da sua instalaçã o mais recente do Python 2.x é exibido. Agora tente mudar
a primeira linha para ser:
#! python3
Re-executar o comando agora deve exibir informaçõ es da ú ltima versã o do Python 3.x. Como nos exemplos da linha
de comando acima, você pode especificar um qualificador de versã o mais explícito. Presumindo que você tem o
Python 3.7 instalado, tente mudar a primeira linha para #! python3.7 e você deve ver as informaçõ es da versã o
3.7 sendo exibidas.
Note que diferentemente do uso interativo, um simples “python” irá usar a ú ltima versã o do Python 2.x que você tem
instalada. Isso é para retrocompatibilidade e para compatibilidade com Unix, onde o comando python tipicamente
se refere ao Python 2.
#! /usr/bin/python
O Python padrã o ou um ambiente virtual ativo será localizado e utilizado. Como muitos scripts Python escritos para
funcionar no Unix já terã o essa linha, você deve perceber que esses scripts podem ser usados pelo inicializador sem
modificaçã o. Se você está escrevendo um novo script no Windows que você espera que seja ú til no Unix, você deve
usar uma dessas linhas shebang começando com /usr.
Qualquer um dos comandos virtuais acima pode ser sufixado com uma versã o explícita (ou apenas a maior versã o,
ou a maior e a menor versã o). Alé m disso, a versã o de 32 bits pode ser solicitada adicionando “-32” apó s a menor
versã o. Isto é , /usr/bin/python3.7-32 irá solicitar o uso do python 3.7 32-bit. Se um ambiente virtual estiver
ativo, a versã o será ignorada e o ambiente será usado.
Adicionado na versã o 3.7: A partir do inicializador do python 3.7 é possível solicitar a versã o 64-bit adicionando
o sufixo “-64”. Alé m disso é possível especificar uma versã o maior e arquitetura sem a menor (isto é , /usr/bin/
python3-64).
Alterado na versã o 3.11: O sufixo “-64” foi descontinuado e agora implica “qualquer arquitetura que nã o seja compro-
vadamente i386/32 bits”. Para solicitar um ambiente específico, use o novo argumento -V:TAG com a tag completa.
Alterado na versã o 3.13: Comandos virtuais que referenciam python agora preferem um ambiente virtual ativo em
vez de pesquisar PATH. Isso lida com casos em que o shebang especifica /usr/bin/env python3, mas python3.
exe nã o está presente no ambiente ativo.
A forma /usr/bin/env da linha shebang tem mais uma propriedade especial. Antes de procurar por interpretadores
Python instalados, este formulá rio pesquisará o executá vel PATH por um executá vel Python correspondente ao nome
fornecido como o primeiro argumento. Isso corresponde ao comportamento do programa Unix env, que executa
uma pesquisa PATH. Se um executá vel correspondente ao primeiro argumento apó s o comando env nã o puder ser
encontrado, mas o argumento começar com python, ele será tratado conforme descrito para os outros comandos
virtuais. A variá vel de ambiente PYLAUNCHER_NO_SEARCH_PATH pode ser definida (para qualquer valor) para
ignorar esta pesquisa de PATH.
As linhas Shebang que nã o correspondem a nenhum desses padrõ es sã o procuradas na seçã o [commands] do arquivo
.INI do lançador. Isso pode ser usado para lidar com certos comandos de uma maneira que faça sentido para o seu
sistema. O nome do comando deve ser um ú nico argumento (sem espaços no executá vel shebang) e o valor substituído
é o caminho completo para o executá vel (argumentos adicionais especificados no .INI serã o citados como parte do
nome do arquivo).
[commands]
/bin/xpython=C:\Program Files\XPython\[Link]
Quaisquer comandos nã o encontrados no arquivo .INI sã o tratados como caminhos executá veis do Windows que sã o
absolutos ou relativos ao diretó rio que conté m o arquivo de script. Isso é uma conveniê ncia para scripts somente
do Windows, como aqueles gerados por um instalador, pois o comportamento nã o é compatível com shells de estilo
Unix. Esses caminhos podem ser citados e podem incluir vá rios argumentos, apó s os quais o caminho para o script
e quaisquer argumentos adicionais serã o anexados.
#! /usr/bin/python -v
4.8.4 Personalização
Personalização via arquivos INI
Dois arquivos .ini serã o pesquisados pelo inicializador - [Link] no diretó rio de dados de aplicaçõ es do usuá rio
atual (%LOCALAPPDATA% ou $env:LocalAppData) e [Link] no mesmo diretó rio que o inicializador. Os mesmos
arquivos .ini sã o usados para ambas a versã o ‘console’ do inicializador (isto é , [Link]) e a versã o ‘windows’ (isto é ,
[Link]).
Personalizaçã o especificada no “diretó rio da aplicaçã o” terã o precedê ncia sobre à quela especificada junto do execu-
tá vel, portanto um usuá rio, que pode nã o ter acesso de escrita ao arquivo .ini junto do inicializador, pode sobrescrever
comandos naquele arquivo .ini global.
quais versõ es estã o instaladas no PC e sem considerar a ordem com que elas foram instaladas (isto é , sem saber se a
ú ltima a ser instalada foi a versã o 32 ou 64-bit do Python e do instalador correspondente). Como observado acima,
um sufixo opcional “-32” ou “-64” pode ser usado como especificador de versã o para mudar esse comportamento.
Exemplos:
• Se nenhuma opçã o relevante for definida, os comandos python e python2 irã o usar a ú ltima versã o instalada
do Python 2.x e o comando python3 irá usar o ú ltimo Python 3.x instalado.
• O comando python3.7 nã o vai consultar nenhuma opçã o já que as versõ es estã o completamente especifica-
das.
• Se PY_PYTHON=3, os comandos python e python3 irã o ambos usar a ú ltima versã o do Python 3 instalada.
• Se PY_PYTHON=3.7-32, o comando python irá usar a implementaçã o 32 bits do 3.7 enquanto o comando
python3 irá usar o ú ltimo Python instalado (PY_PYTHON nã o foi considerado porque uma versã o maior foi
especificada).
• Se PY_PYTHON=3 e PY_PYTHON3=3.7, os comandos python e python3 irã o ambos usar especificamente
3.7
Em adiçã o à s variá veis de ambiente, as mesmas configuraçõ es podem ser feitas no arquivo .INI usado pelo inicializa-
dor. A seçã o nos arquivos INI é chamada [defaults] e o nome da chave será o mesmo que as variá veis de ambiente
sem o prefixo PY_ (e observe que os nomes das chaves no arquivo INI nã o diferem maiú sculas e minú sculas). Os
conteú dos de uma variá vel de ambiente irã o sobrescrever coisas especificadas em um arquivo INI.
Por exemplo:
• Configurar PY_PYTHON=3.7 é o equivalente ao arquivo INI contendo:
[defaults]
python=3.7
[defaults]
python=3
python3=3.7
4.8.5 Diagnósticos
Se uma variá vel de ambiente PYLAUNCHER_DEBUG é configurada (para qualquer valor), o inicializador irá exibir a
informaçã o de diagnó stico do stderr (isto é , no console). Enquanto essa informaçã o consegue ser simultaneamente
verbosa e concisa, ela deve permitir que você veja quais versõ es do Python foram localizadas, porquê uma versã o
particular foi escolhida e qual linha de comando exatamente foi usada para executar o Python alvo. Destina-se
principalmente para testes e depuraçã o.
Se um arquivo [Link] for encontrado juntamente com o principal executá vel ou no diretó rio um nível acima
do executá vel, as seguintes variaçõ es se aplicam:
• Se home é um caminho absoluto e PYTHONHOME nã o está definido, o caminho é usado ao invé s do caminho ao
principal executá vel quando deduzindo a localizaçã o do Home.
O resultado final de tudo isso é :
• Quando executando [Link], ou qualquer outro .exe no diretó rio principal do Python (ou uma versã o
instalada, ou diretamente do diretó rio PCbuild), o caminho nú cleo é deduzido, e os caminhos nú cleo no registro
sã o ignorados. Outros “caminhos da aplicaçã o” no registro sã o sempre lidos.
• Quando Python é hospedado em outro .exe (diretó rio diferente, embutido via COM, etc), o “Python Home”
nã o será deduzido, entã o o caminho nú cleo do registro é usado. Outros “caminhos da aplicaçã o” no registro
sempre sã o lidos.
• Se o Python nã o puder encontrar seu Home e nã o existem valores no registro (.exe imutá veis, algumas configu-
raçõ es de instalaçã o bem estranhas) você recebe um caminho com alguns caminhos padrã o, poré m relativos.
Para aqueles que querem empacotar o Python em suas aplicaçõ es ou distribuiçõ es, o seguinte conselho irá prevenir
conflitos com outras instalaçõ es:
• Inclua um arquivo ._pth juntamente do executá vel contendo os diretó rios a serem incluídos. Isso irá ignorar
caminhos listados no registro e variá veis de ambiente, e també m ignorar sites a nã o ser que import site
seja listado.
• Se você estiver carregando [Link] ou [Link] em seu pró prio executá vel, defina explicita-
mente PyConfig.module_search_paths antes de Py_InitializeFromConfig().
• Limpe e/ou sobrescreva PYTHONPATH e defina PYTHONHOME antes de iniciar o [Link] a partir da sua
aplicaçã o.
• Se você nã o puder usar as sugestõ es anteriores (por exemplo, você é uma distribuiçã o que permite que as
pessoas executem o arquivo [Link] diretamente), certifique-se de que o arquivo de referê ncia (Lib\
[Link]) existe no seu diretó rio de instalaçã o. (Note que ele nã o será detectado dentro de um arquivo ZIP, mas
um arquivo ZIP corretamente nomeado será detectado ao invé s disso.)
Isso irá garantir que seus arquivos em uma instalaçã o global no sistema nã o terã o precedê ncia sobre uma có pia da
biblioteca padrã o empacotada com a sua aplicaçã o. Caso contrá rio, seus usuá rios podem experienciar problemas
usando sua aplicaçã o. Note que a primeira sugestã o é a melhor, pois as outras podem ainda estar suscetíveis a
caminhos nã o-padrã o no registro e no site-packages do usuá rio.
Alterado na versã o 3.6: Adiciona suporte a arquivos ._pth e remove a opçã o applocal do [Link].
Alterado na versã o 3.6: Adiciona [Link] como uma possível referê ncia quando diretamente adjacente ao
executá vel.
Descontinuado desde a versã o 3.6: Mó dulos especificados no registro sob Modules (nã o PythonPath) podem ser
importados por [Link]. Este localizador está ativo no Windows no
3.6.0 e anteriores, mas pode precisar ser explicitamente adicionado ao sys.meta_path no futuro.
4.10.1 PyWin32
O mó dulo PyWin32 de Mark Hammond é uma coleçã o de mó dulos para suporte avançado específico para Windows.
Isso inclui utilitá rios para:
• Component Object Model (COM)
• Chamadas à API Win32
• Registro
• Log de Eventos
• Interfaces de usuá rio Microsoft Foundation Classes (MFC)
PythonWin é uma aplicaçã o MFC de exemplo enviada com o PyWin32. É uma IDE embutível com um depurador
embutido.
µ Ver também
4.10.2 cx_Freeze
cx_Freeze encapsula scripts Python em programas executá veis do Windows (arquivos *.exe). Quando você tiver
feito isso, você pode distribuir sua aplicaçã o sem solicitar que os seus usuá rios instalem o Python.
Este documento tem o objetivo de fornecer uma visã o geral dos comportamentos específicos do macOS que você
deve conhecer para começar a usar o Python em computadores Mac. O Python em um Mac com macOS é muito
semelhante ao Python em outras plataformas derivadas do Unix, mas há algumas diferenças na instalaçã o e alguns
recursos.
Há vá rias maneiras de obter e instalar o Python para macOS. Versõ es pré -construídas das versõ es mais recentes do
Python estã o disponíveis em vá rios distribuidores. Grande parte deste documento descreve o uso dos Pythons forne-
cidos pela equipe de lançamento do CPython, disponíveis para download no site [Link]. Consulte Distribuições
alternativas para conhecer outras opçõ es.
63
Python Setup and Usage, Release 3.13.7
Ao clicar no botã o Continuar, é exibido o Read Me desse instalador. Alé m de outras informaçõ es importantes, o
Read Me documenta qual versã o de Python será instalada e em quais versõ es do macOS ele é compatível. Talvez você
precise rolar a tela para ler o arquivo inteiro. Por padrã o, esse Read Me també m será instalado em /Applications/
Python 3.13/ e estará disponível para leitura a qualquer momento.
Ao clicar em Continuar, o instalador exibe a licença do Python e de outros softwares incluídos. Você precisará
Concordar com os termos da licença antes de prosseguir para a pró xima etapa. Esse arquivo de licença també m será
instalado e estará disponível para leitura a qualquer momento.
Apó s aceitar os termos da licença, a pró xima etapa será a tela Tipo de instalação. Para a maioria dos usos, o conjunto
padrã o de operaçõ es de instalaçã o é adequado.
Ao pressionar o botã o Personalizar, você pode optar por omitir ou selecionar determinados componentes de pacote
do instalador. Clique em cada nome de pacote para ver uma descriçã o do que ele instala. Para també m instalar o
suporte para o recurso experimental opcional de threads livres, consulte Instalando binários com threads livres.
Em ambos os casos, clicar em Instalar iniciará o processo de instalaçã o solicitando a permissã o para instalar um
novo software. É necessá rio um nome de usuá rio do macOS com privilé gio de Administrador, pois o Python
instalado estará disponível para todos os usuá rios do Mac.
Quando a instalaçã o for concluída, a janela Resumo será exibida.
Isso abrirá uma janela temporá ria do console Terminal que usará o novo Python para baixar e instalar certificados
raiz SSL para seu uso.
® Nota
As versõ es recentes do macOS incluem um comando python3 em /usr/bin/python3 que aponta para uma
versã o geralmente mais antiga e incompleta de Python fornecida por e para uso pelas ferramentas de desenvol-
vimento da Apple, Xcode ou o Command Line Tools for Xcode. Você nunca deve modificar ou tentar
excluir essa instalaçã o por ser controlada pela Apple e é usada por softwares da Apple ou de terceiros. Se você
optar por instalar uma versã o mais recente do Python a partir de [Link], você terá duas instalaçõ es dife-
rentes, mas funcionais, de Python no computador que podem coexistir. As opçõ es do instalador padrã o devem
garantir que o comando python3 seja usado em vez do python3 do sistema.
® Nota
Tudo descrito nesta seçã o é considerado experimental e espera-se que mude em versõ es futuras.
The [Link] Python for macOS installer package can optionally install an additional build of Python 3.13 that
supports PEP 703, the experimental free-threading feature (running with the global interpreter lock disabled). Check
the release page on [Link] for possible updated information.
Como esse recurso ainda é considerado experimental, seu suporte nã o é instalado por padrã o. Ele é empacotado
como uma opçã o de instalaçã o separada, disponível clicando no botã o Personalizar na etapa Tipo de instalação do
instalador, como descrito acima.
If the box next to the Free-threaded Python package name is checked, a separate [Link] will also
be installed alongside the normal [Link] in /Library/Frameworks. This configuration allows a
free-threaded Python 3.13 build to co-exist on your system with a traditional (GIL only) Python 3.13 build with
minimal risk while installing or testing. This installation layout is itself experimental and is subject to change in
future releases.
Precauçõ es e limitaçõ es conhecidas:
• O pacote Unix command-line tools, que é selecionado por padrã o, instalará links em /usr/local/bin para
python3.13t, o interpretador com threads livres e python3.13t-config, um utilitá rio de configuraçã o
que pode ser ú til para criadores de pacote. Como /usr/local/bin é normalmente incluído em seu PATH
do console, geralmente nã o é necessá rio alterar as variá veis de ambiente do PATH para usar o python3.13t.
• Neste lançamento, o pacote Shell profile updater e o comando Update Shell [Link] em
/Applications/Python 3.13/ nã o dã o suporte ao pacote com threads livres.
• A construçã o com threads livres e a compilaçã o tradicional tê m caminhos de pesquisa separados e diretó -
rios site-packages separados, portanto, por padrã o, se você precisar de um pacote disponível em ambas
construçõ es, talvez seja necessá rio instalá -lo em ambos. O pacote com threads livres instalará uma instâ ncia
separada do pip para uso com o python3.13t.
– Para instalar um pacote usando pip sem um venv:
python3.13t -m pip install <package_name>
• Ao trabalhar com vá rios ambientes Python, geralmente é mais seguro e mais fá cil criar e usar ambientes
virtuais. Isso pode tanto evitar possíveis conflitos de comandos, quanto evitar a confusã o sobre qual Python
está sendo usado:
python3.13t -m venv <venv_name>
e, em seguida, activate.
• Para executar uma versã o do IDLE com threads livres:
python3.13t -m idlelib
• Os interpretadores em ambos as construçõ es respondem à s mesmas variá veis de ambiente PYTHON, o que
pode gerar resultados inesperados, por exemplo, se você tiver PYTHONPATH definido em um perfil de console.
Se necessá rio, há opções de linha de comando como -E para ignorar essas variá veis de ambiente.
• A construçã o com threads livres é ligada à s bibliotecas compartilhadas de terceiros, como OpenSSL e Tk, ins-
taladas no framework tradicional. Isso significa que ambas as compilaçõ es també m compartilham um conjunto
de certificados, como instalados pelo script Install [Link], portanto, ele só precisa ser
executado uma vez.
• Se você nã o puder depender do link em /usr/local/bin apontando para python3.13t com threads livres
do [Link] (por exemplo, se quiser instalar sua pró pria versã o lá ou se alguma outra distribuiçã o instalá -
-lo lá ), você poderá definir explicitamente sua variá vel de ambiente de console PATH para incluir o diretó rio
da framework PythonT bin:
export PATH="/Library/Frameworks/[Link]/Versions/3.13/bin":"$PATH"
A instalaçã o tradicional do framework por padrã o faz algo semelhante, exceto pelo arquivo Python.
framework. Observe que ter dois diretó rios bin do framework em PATH pode gerar confusã o se houver
nomes duplicados, como python3.13, em ambos; qual deles é realmente usado depende da ordem em que
aparecem em PATH. Os comandos which python3.x ou which [Link] pode mostrar qual caminho
está sendo usado. Usar ambientes virtuais pode ajudar a evitar essas ambiguidades. Outra opçã o pode ser criar
um alias no console para o interpretador desejado, como:
alias py3.13="/Library/Frameworks/[Link]/Versions/3.13/bin/python3.
,→13"
alias py3.13t="/Library/Frameworks/[Link]/Versions/3.13/bin/python3.
,→13t"
<plist version="1.0">
<array>
<dict>
<key>attributeSetting</key>
<integer>1</integer>
<key>choiceAttribute</key>
<string>selected</string>
<key>choiceIdentifier</key>
<string>[Link]-3.13</string>
</dict>
</array>
</plist>
EOF
Você pode entã o testar que ambas as compilaçõ es de instaladores estã o disponíveis com algo como:
$ # test that the free-threaded interpreter was installed if the Unix Command␣
,→Tools package was enabled
$ /usr/local/bin/python3.13t -VV
Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, Jun 5␣
,→2024, [Link]) [Clang 15.0.0 (clang-1500.3.9.4)]
$ # test that they are also available without the prefix if /usr/local/bin is on
,→$PATH
$ python3.13t -VV
Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, Jun 5␣
,→2024, [Link]) [Clang 15.0.0 (clang-1500.3.9.4)]
$ python3.13 -VV
Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, [Link]) [Clang 15.0.0␣
,→(clang-1500.3.9.4)]
® Nota
Python no Android é diferente do Python em plataformas de desktop. Em uma plataforma desktop, o Python geral-
mente é instalado como um recurso do sistema que pode ser usado por qualquer usuá rio daquele computador. Os
usuá rios entã o interagem com o Python executando um executá vel python e inserindo comandos em um prompt
interativo ou executando um script Python.
No Android, nã o existe o conceito de instalaçã o como recurso do sistema. A ú nica unidade de distribuiçã o de software
é uma aplicaçã o, ou “app”. També m nã o há console onde você possa executar um executá vel python ou interagir
com um REPL do Python.
Como resultado, a ú nica maneira de usar Python no Andoid é no modo incorporado – ou seja, escrevendo uma
aplicaçã o Android nativo, incorporando um interpretador Python usando libpython e invocando o có digo Python
usando API de incorporaçã o do Python. O interpretador Python completo, a biblioteca padrã o e todo o seu có digo
Python sã o entã o empacotados para sua aplicaçã o para seu pró prio uso privado.
A biblioteca padrã o do Python tem algumas omissõ es e restriçõ es notá veis no Andoid. Consulte o guia de disponi-
bilidade de API para Android para obter detalhes.
• Adicione có digo ao seu arquivo [Link] para copiar os seguintes itens para o seu projeto. Todos, exceto
seu pró prio có digo Python, podem ser copiados de prefix/lib:
– Em suas bibliotecas JNI:
77
Python Setup and Usage, Release 3.13.7
∗ libpython*.*.so
∗ lib*_python.so (bibliotecas externas, tal como OpenSSL)
– Em seus ativos (assets):
∗ python*.* (a biblioteca padrã o do Python)
∗ python*.*/site-packages (seu pró prio có digo Python)
• Adicione có digo ao seu aplicativo para extrair os ativos para o sistema de arquivos.
• Adicione có digo a sua aplicaçã o para iniciar o Python em modo incorporado. Isso precisará ser có digo C
chamado via JNI.
Autores
Russell Keith-Magee (2024-03)
Python no iOS é diferente do Python em plataformas de desktop. Em uma plataforma desktop, o Python geralmente
é instalado como um recurso do sistema que pode ser usado por qualquer usuá rio daquele computador. Os usuá rios
entã o interagem com o Python executando um executá vel python e inserindo comandos em um prompt interativo
ou executando um script Python.
No iOS, nã o existe o conceito de instalaçã o como recurso do sistema. A ú nica unidade de distribuiçã o de software
é uma aplicaçã o, ou “app”. També m nã o há console onde você possa executar um executá vel python ou interagir
com um REPL do Python.
Como resultado, a ú nica maneira de usar Python no iOS é no modo incorporado – ou seja, escrevendo uma aplicaçã o
iOS nativo e incorporando um interpretador Python usando libPython e invocando o có digo Python usando API
de incorporaçã o do Python. O interpretador Python completo, a biblioteca padrã o e todo o seu có digo Python sã o
entã o empacotados como um pacote independente que pode ser distribuído pela iOS App Store.
Se você deseja experimentar pela primeira vez escrever uma aplicaçã o iOS em Python, projetos como BeeWare e
Kivy irã o fornecer uma experiê ncia de usuá rio muito mais acessível. Esses projetos gerenciam as complexidades
associadas à execuçã o de um projeto iOS, portanto, você só precisa lidar com o pró prio có digo Python.
79
Python Setup and Usage, Release 3.13.7
Isto entra em conflito com a abordagem usual do Python para distribuiçã o de biná rios, que permite que um mó dulo
de extensã o biná ria seja carregado de qualquer local em [Link]. Para garantir a conformidade com as políticas
da App Store, um projeto iOS deve pó s-processar quaisquer pacotes Python, convertendo mó dulos biná rios .so
em estruturas independentes individuais com metadados e assinatura apropriados. Para obter detalhes sobre como
realizar esse pó s-processamento, consulte o guia para adicionar Python ao seu projeto.
Para ajudar o Python a descobrir biná rios em seu novo local, o arquivo .so original em [Link] é substituído por
um arquivo .fwork. Este arquivo é um arquivo texto que conté m a localizaçã o do biná rio do framework, relativo ao
pacote de aplicaçõ es. Para permitir que o framework retorne ao local original, o framework deve conter um arquivo
.origin que conté m a localizaçã o do arquivo .fwork, relativo ao pacote da aplicaçã o.
Por exemplo, considere o caso de uma importaçã o from [Link] import _whiz, onde _whiz é implemen-
tado com o mó dulo biná rio sources/foo/bar/_whiz.[Link], com sources sendo o local registrado em
[Link], relativo ao pacote da aplicaçã o. Este mó dulo deve ser distribuído como Frameworks/[Link].
_whiz.framework/[Link]._whiz (criando o nome do framework a partir do caminho de importaçã o com-
pleto do mó dulo), com um arquivo [Link] no diretó rio .framework identificando o biná rio como um fra-
mework. O mó dulo [Link]._whiz seria representado no local original com um arquivo marcador sources/
foo/bar/_whiz.[Link], contendo o caminho Frameworks/[Link]._whiz/[Link]._whiz. O fra-
mework també m conteria Frameworks/[Link]._whiz.framework/[Link]._whiz.origin, contendo o
caminho para o arquivo .fwork.
Ao executar no iOS, o interpretador Python instalará um AppleFrameworkLoader que é capaz de ler e importar
arquivos .fwork. Uma vez importado, o atributo __file__ do mó dulo biná rio reportará como a localizaçã o do
arquivo .fwork. Entretanto, o ModuleSpec para o mó dulo carregado reportará a origin como a localizaçã o do
biná rio na pasta do framework.
para usuá rios finais compilarem seus pró prios mó dulos. Ao compilar mó dulos Python de terceiros para iOS, você
deve garantir que esses biná rios stub estejam no seu caminho.
8. Adicione uma etapa de construçã o que copie a biblioteca padrã o do Python em sua aplicaçã o. Na aba “Build
Phases”, adicione uma nova etapa de construçã o “Run Script” antes da etapa “Embed Frameworks”, mas depois
da etapa “Copy Bundle Resources”. Nomeie a etapa como “Install Target Specific Python Standard Library”,
desative a caixa de seleçã o “Based on dependency analysis” e defina o conteú do do script como:
set -e
mkdir -p "$CODESIGNING_FOLDER_PATH/python/lib"
if [ "$EFFECTIVE_PLATFORM_NAME" = "-iphonesimulator" ]; then
echo "Instalando módulos Python para iOS Simulator"
rsync -au --delete "$PROJECT_DIR/[Link]/ios-arm64_x86_64-
,→simulator/lib/" "$CODESIGNING_FOLDER_PATH/python/lib/"
else
echo "Instalando módulos Python para iOS Device"
rsync -au --delete "$PROJECT_DIR/[Link]/ios-arm64/lib/" "
,→$CODESIGNING_FOLDER_PATH/python/lib/"
fi
Note que o nome da “fatia” do simulador no XCframework pode ser diferente, dependendo das arquiteturas
de CPU que seu XCFramework provê suporte.
9. Adicione uma segunda etapa de construçã o que processe os mó dulos de extensã o biná ria na biblioteca padrã o
no formato “Framework”. Adicione uma etapa de construçã o “Run Script” diretamente após aquela que você
adicionou na etapa 8, chamada “Prepare Python Binary Modules”. També m deve ter “Based on dependency
analysis” desmarcado, com o seguinte conteú do de script:
set -e
install_dylib () {
INSTALL_BASE=$1
FULL_EXT=$2
FRAMEWORK_BUNDLE_ID=$(echo $PRODUCT_BUNDLE_IDENTIFIER.$FULL_MODULE_NAME |␣
,→tr "_" "-")
PYTHON_VER=$(ls -1 "$CODESIGNING_FOLDER_PATH/python/lib")
echo "Instalando módulos de extensão da biblioteca padrão para Python $PYTHON_
,→VER..."
10. Adicione có digo Objective C para inicializar e usar um interpretador Python em modo embarcado. Você deve
garantir que:
• Modo UTF-8 (PyPreConfig.utf8_mode) esteja habilitado;
• Stdio buffered (PyConfig.buffered_stdio) esteja desabilitado;
• Escrita de bytecode (PyConfig.write_bytecode) esteja desabilitada;
• Manipuladores de sinais (PyConfig.install_signal_handlers) estejam habilitados;
• PYTHONHOME para o interpretador esteja configurado para apontar para a subpasta python do
pacote da sua aplicaçã o; e
• O PYTHONPATH para o interpretador inclui:
– a subpasta python/lib/python3.X do pacote da sua aplicaçã o,
– a subpasta python/lib/python3.X/lib-dynload do pacote da sua aplicaçã o, e
– a subpasta app do pacote da sua aplicaçã o
O local do pacote da sua aplicaçã o pode ser determinada usando [[NSBundle mainBundle]
resourcePath].
Os passos 8, 9 e 10 destas instruçõ es presumem que você tem uma ú nica pasta de có digo de aplicaçã o Python
puro, chamada app. Se você tiver mó dulos biná rios de terceiros em sua aplicaçã o, serã o necessá rias algumas etapas
adicionais:
• Você precisa garantir que todas as pastas que contenham biná rios de terceiros sejam associadas ao destino
da aplicaçã o ou copiadas como parte da etapa 8. A etapa 8 també m deve limpar quaisquer biná rios que nã o
sejam apropriados para a plataforma que uma construçã o específica está direcionando (ou seja, exclua todos
os biná rios do dispositivo se estiver criando uma aplicaçã o direcionado ao simulador).
• Quaisquer pastas que contenham biná rios de terceiros devem ser processadas no formato framework no passo
9. A invocaçã o de install_dylib que processa a pasta lib-dynload pode ser copiada e adaptada para
este propó sito.
• Se você estiver usando uma pasta separada para pacotes de terceiros, certifique-se de que essa pasta esteja
incluída como parte da configuraçã o PYTHONPATH no passo 10.
• Se alguma das pastas que contê m pacotes de terceiros contiver arquivos .pth, você deverá adicionar essa pasta
como um diretório de site (usando [Link]()), em vez de adicioná -la diretamente a PYTHONPATH
ou [Link].
Você precisará modificar a referê ncia iOS/testbed para apontar para esse diretó rio na á rvore de fontes do CPython;
todas as pastas especificadas com o sinalizador --app serã o copiadas para o projeto de banco de testes clonado. O
banco de testes resultante será criado na pasta app-testbed. Neste exemplo, módulo1 e módulo2 seriam mó -
dulos importá veis em tempo de execuçã o. Se seu projeto tiver dependê ncias adicionais, elas podem ser instala-
das na pasta app-testbed/iOSTestbed/app_packages (usando pip install --target app-testbed/
iOSTestbed/app_packages ou similar).
Você pode entã o usar a pasta app-testbed para executar o conjunto de testes para seu aplicativo. Por exemplo, se
mó[Link] fosse o ponto de entrada para seu conjunto de testes, você poderia executar:
Isso é o equivalente a executar python -m mó[Link] em uma compilaçã o Python de desktop. Quaisquer
argumentos apó s -- serã o passados para o banco de testes como se fossem argumentos para python -m em uma
má quina de desktop.
Você també m pode abrir o projeto de teste no Xcode executando:
$ open app-testbed/[Link]
Isso permitirá que você use o conjunto completo de ferramentas do Xcode para depuraçã o.
The arguments used to run the test suite are defined as part of the test plan. To modify the test plan, select the test
plan node of the project tree (it should be the first child of the root node), and select the “Configurations” tab. Modify
the “Arguments Passed On Launch” value to change the testing arguments.
The test plan also disables parallel testing, and specifies the use of the [Link] file for providing
configuration of the debugger. The default debugger configuration disables automatic breakpoints on the SIGINT,
SIGUSR1, SIGUSR2, and SIGXFSZ signals.
A biblioteca padrã o do Python conté m alguns có digos que violam essas regras automatizadas. Embora essas viola-
çõ es pareçam ser falsos positivos, as regras de revisã o da Apple nã o podem ser contestadas; portanto, é necessá rio
modificar a biblioteca padrã o do Python para que uma aplicaçã o passe na revisã o da App Store.
A á rvore de fontes do Python conté m um arquivo de patch que removerá todo o có digo que é conhecido por causar
problemas no processo de revisã o da App Store. Este patch é aplicado automaticamente quando o ao construir para
o iOS.
Editores e IDEs
Há um grande nú mero de IDEs com suporte à linguagem de programaçã o Python. Vá rios editores e IDEs provê em
destaques coloridos de sintaxe, ferramentas de depuraçã o, e checagem do có digo conforme a PEP 8.
87
Python Setup and Usage, Release 3.13.7
Glossário
>>>
O prompt padrã o do console interativo do Python. Normalmente visto em exemplos de có digo que podem ser
executados interativamente no interpretador.
...
Pode se referir a:
• O prompt padrã o do console interativo do Python ao inserir o có digo para um bloco de có digo recuado,
quando dentro de um par de delimitadores correspondentes esquerdo e direito (parê nteses, colchetes,
chaves ou aspas triplas) ou apó s especificar um decorador.
• A constante embutida Ellipsis.
classe base abstrata
Classes bases abstratas complementam tipagem pato, fornecendo uma maneira de definir interfaces quando
outras té cnicas, como hasattr(), seriam desajeitadas ou sutilmente erradas (por exemplo, com mé todos
má gicos). ABCs introduzem subclasses virtuais, classes que nã o herdam de uma classe mas ainda sã o reconhe-
cidas por isinstance() e issubclass(); veja a documentaçã o do mó dulo abc. Python vem com muitas
ABCs embutidas para estruturas de dados (no mó dulo [Link]), nú meros (no mó dulo numbers),
fluxos (no mó dulo io), localizadores e carregadores de importaçã o (no mó dulo [Link]). Você pode
criar suas pró prias ABCs com o mó dulo abc.
anotação
Um ró tulo associado a uma variá vel, um atributo de classe ou um parâ metro de funçã o ou valor de retorno,
usado por convençã o como dica de tipo.
Anotaçõ es de variá veis locais nã o podem ser acessadas em tempo de execuçã o, mas anotaçõ es de variá veis
globais, atributos de classe e funçõ es sã o armazenadas no atributo especial __annotations__ de mó dulos,
classes e funçõ es, respectivamente.
Veja anotação de variável, anotação de função, PEP 484 e PEP 526, que descrevem esta funcionalidade.
Veja també m annotations-howto para as melhores prá ticas sobre como trabalhar com anotaçõ es.
argumento
Um valor passado para uma função (ou método) ao chamar a funçã o. Existem dois tipos de argumento:
• argumento nomeado: um argumento precedido por um identificador (por exemplo, name=) na chamada
de uma funçã o ou passada como um valor em um dicioná rio precedido por **. Por exemplo, 3 e 5 sã o
ambos argumentos nomeados na chamada da funçã o complex() a seguir:
89
Python Setup and Usage, Release 3.13.7
complex(real=3, imag=5)
complex(**{'real': 3, 'imag': 5})
• argumento posicional: um argumento que nã o é um argumento nomeado. Argumentos posicionais po-
dem aparecer no início da lista de argumentos e/ou podem ser passados com elementos de um iterável
precedido por *. Por exemplo, 3 e 5 sã o ambos argumentos posicionais nas chamadas a seguir:
complex(3, 5)
complex(*(3, 5))
Argumentos sã o atribuídos à s variá veis locais nomeadas no corpo da funçã o. Veja a seçã o calls para as regras
de atribuiçã o. Sintaticamente, qualquer expressã o pode ser usada para representar um argumento; avaliada a
expressã o, o valor é atribuído à variá vel local.
Veja també m o termo parâmetro no glossá rio, a pergunta no FAQ sobre a diferença entre argumentos e parâ -
metros e PEP 362.
gerenciador de contexto assíncrono
Um objeto que controla o ambiente envolto numa instruçã o async with por meio da definiçã o dos mé todos
__aenter__() e __aexit__(). Introduzido pela PEP 492.
gerador assíncrono
Uma funçã o que retorna um iterador gerador assíncrono. É parecida com uma funçã o de corrotina definida
com async def exceto pelo fato de conter instruçõ es yield para produzir uma sé rie de valores que podem
ser usados em um laço async for.
Normalmente se refere a uma funçã o geradora assíncrona, mas pode se referir a um iterador gerador assín-
crono em alguns contextos. Em casos em que o significado nã o esteja claro, usar o termo completo evita a
ambiguidade.
Uma funçã o geradora assíncrona pode conter expressõ es await e també m as instruçõ es async for e async
with.
90 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.7
BDFL
Abreviaçã o da expressã o da língua inglesa “Benevolent Dictator for Life” (em portuguê s, “Ditador Benevolente
Vitalício”), referindo-se a Guido van Rossum, criador do Python.
arquivo binário
Um objeto arquivo capaz de ler e gravar em objetos bytes ou similares. Exemplos de arquivos biná rios sã o
arquivos abertos no modo biná rio ('rb', 'wb' ou 'rb+'), [Link], [Link], e
instâ ncias de [Link] e [Link].
Veja també m arquivo texto para um objeto arquivo capaz de ler e gravar em objetos str.
referência emprestada
Na API C do Python, uma referê ncia emprestada é uma referê ncia a um objeto que nã o é dona da referê ncia.
Ela se torna um ponteiro solto se o objeto for destruído. Por exemplo, uma coleta de lixo pode remover a
ú ltima referência forte para o objeto e assim destruí-lo.
Chamar Py_INCREF() na referência emprestada é recomendado para convertê -lo, internamente, em uma
referência forte, exceto quando o objeto nã o pode ser destruído antes do ú ltimo uso da referê ncia emprestada.
A funçã o Py_NewRef() pode ser usada para criar uma nova referência forte.
objeto bytes ou similar
Um objeto com suporte ao bufferobjects e que pode exportar um buffer C contíguo. Isso inclui todos os
objetos bytes, bytearray e [Link], alé m de muitos objetos memoryview comuns. Objetos bytes ou
similares podem ser usados para vá rias operaçõ es que funcionam com dados biná rios; isso inclui compactaçã o,
salvamento em um arquivo biná rio e envio por um soquete.
Algumas operaçõ es precisam que os dados biná rios sejam mutá veis. A documentaçã o geralmente se refere a
eles como “objetos bytes ou similares para leitura e escrita”. Exemplos de objetos de buffer mutá vel incluem
bytearray e um memoryview de um bytearray. Outras operaçõ es exigem que os dados biná rios sejam
armazenados em objetos imutá veis (“objetos bytes ou similares para somente leitura”); exemplos disso incluem
bytes e a memoryview de um objeto bytes.
bytecode
O có digo-fonte Python é compilado para bytecode, a representaçã o interna de um programa em Python no
interpretador CPython. O bytecode també m é mantido em cache em arquivos .pyc e .pyo, de forma que
executar um mesmo arquivo é mais rá pido na segunda vez (a recompilaçã o dos fontes para bytecode nã o é
necessá ria). Esta “linguagem intermediá ria” é adequada para execuçã o em uma máquina virtual, que executa
o có digo de má quina correspondente para cada bytecode. Tenha em mente que nã o se espera que bytecodes
sejam executados entre má quinas virtuais Python diferentes, nem que se mantenham está veis entre versõ es de
Python.
Uma lista de instruçõ es bytecode pode ser encontrada na documentaçã o para o mó dulo dis.
chamável
Um chamá vel é um objeto que pode ser chamado, possivelmente com um conjunto de argumentos (veja ar-
gumento), com a seguinte sintaxe:
Uma função, e por extensã o um método, é um chamá vel. Uma instâ ncia de uma classe que implementa o
mé todo __call__() també m é um chamá vel.
função de retorno
També m conhecida como callback, é uma funçã o sub-rotina que é passada como um argumento a ser executado
em algum ponto no futuro.
classe
Um modelo para criaçã o de objetos definidos pelo usuá rio. Definiçõ es de classe normalmente conté m defini-
çõ es de mé todos que operam sobre instâ ncias da classe.
variável de classe
Uma variá vel definida em uma classe e destinada a ser modificada apenas no nível da classe (ou seja, nã o em
uma instâ ncia da classe).
91
Python Setup and Usage, Release 3.13.7
variável de clausura
Uma variável livre referenciada de um escopo aninhado que é definida em um escopo externo em vez de ser
resolvida em tempo de execuçã o a partir dos espaços de nomes embutido ou globais. Pode ser explicitamente
definida com a palavra reservada nonlocal para permitir acesso de gravaçã o, ou implicitamente definida se
a variá vel estiver sendo somente lida.
Por exemplo, na funçã o interna no có digo a seguir, tanto x quanto print sã o variáveis livres, mas somente
x é uma variável de clausura:
def externa():
x = 0
def interna():
nonlocal x
x += 1
print(x)
return interna
Devido ao atributo codeobject.co_freevars (que, apesar do nome, inclui apenas os nomes das variá veis
de clausura em vez de listar todas as variá veis livres referenciadas), o termo mais geral variável livre à s vezes
é usado mesmo quando o significado pretendido é se referir especificamente à s variá veis de clausura.
número complexo
Uma extensã o ao familiar sistema de nú meros reais em que todos os nú meros sã o expressos como uma soma
de uma parte real e uma parte imaginá ria. Nú meros imaginá rios sã o mú ltiplos reais da unidade imaginá ria
(a raiz quadrada de -1), normalmente escrita como i em matemá tica ou j em engenharia. O Python tem
suporte nativo para nú meros complexos, que sã o escritos com esta ú ltima notaçã o; a parte imaginá ria escrita
com um sufixo j, [Link]., 3+1j. Para ter acesso aos equivalentes para nú meros complexos do mó dulo math,
utilize cmath. O uso de nú meros complexos é uma funcionalidade matemá tica bastante avançada. Se você
nã o sabe se irá precisar deles, é quase certo que você pode ignorá -los sem problemas.
contexto
Este termo tem diferentes significados dependendo de onde e como ele é usado. Alguns significados comuns:
• O estado ou ambiente temporá rio estabelecido por um gerenciador de contexto por meio de uma instruçã o
with.
92 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.7
função de corrotina
Uma funçã o que retorna um objeto do tipo corrotina. Uma funçã o de corrotina pode ser definida com a instru-
çã o async def, e pode conter as palavras chaves await, async for, e async with. Isso foi introduzido
pela PEP 492.
CPython
A implementaçã o canô nica da linguagem de programaçã o Python, como disponibilizada pelo [Link].
O termo “CPython” é usado quando necessá rio distinguir esta implementaçã o de outras como Jython ou
IronPython.
contexto atual
O contexto (objeto [Link]) que é usado atualmente pelos objetos ContextVar para acessar
(obter ou definir) os valores de variáveis de contexto. Cada thread tem seu pró prio contexto atual. Frameworks
para executar tarefas assíncronas (veja asyncio) associam cada tarefa a um contexto que se torna o contexto
atual sempre que a tarefa inicia ou retoma a execuçã o.
decorador
Uma funçã o que retorna outra funçã o, geralmente aplicada como uma transformaçã o de funçã o usando a
sintaxe @wrapper. Exemplos comuns para decoradores sã o classmethod() e staticmethod().
A sintaxe do decorador é meramente um açú car sintá tico, as duas definiçõ es de funçõ es a seguir sã o semanti-
camente equivalentes:
def f(arg):
...
f = staticmethod(f)
@staticmethod
def f(arg):
...
O mesmo conceito existe para as classes, mas nã o é comumente utilizado. Veja a documentaçã o de definiçõ es
de funçã o e definiçõ es de classe para obter mais informaçõ es sobre decoradores.
descritor
Qualquer objeto que define os mé todos __get__(), __set__() ou __delete__(). Quando um atributo
de classe é um descritor, seu comportamento de associaçã o especial é acionado no acesso a um atributo.
Normalmente, ao se utilizar a.b para se obter, definir ou excluir, um atributo dispara uma busca no objeto
chamado b no dicioná rio de classe de a, mas se b for um descritor, o respectivo mé todo descritor é chamado.
Compreender descritores é a chave para um profundo entendimento de Python pois eles sã o a base de muitas
funcionalidades incluindo funçõ es, mé todos, propriedades, mé todos de classe, mé todos está ticos e referê ncias
para superclasses.
Para obter mais informaçõ es sobre os mé todos dos descritores, veja: descriptors ou o Guia de Descritores.
dicionário
Um vetor associativo em que chaves arbitrá rias sã o mapeadas para valores. As chaves podem ser quaisquer
objetos que possuam os mé todos __hash__() e __eq__(). Isso é chamado de hash em Perl.
compreensão de dicionário
Uma maneira compacta de processar todos ou parte dos elementos de um iterá vel e retornar um dicioná rio com
os resultados. results = {n: n ** 2 for n in range(10)} gera um dicioná rio contendo a chave n
mapeada para o valor n ** 2. Veja comprehensions.
visão de dicionário
Os objetos retornados por [Link](), [Link]() e [Link]() sã o chamados de visõ es de
dicioná rio. Eles fornecem uma visã o dinâ mica das entradas do dicioná rio, o que significa que quando o di-
cioná rio é alterado, a visã o reflete essas alteraçõ es. Para forçar a visã o de dicioná rio a se tornar uma lista
completa use list(dictview). Veja dict-views.
docstring
Abreviatura de “documentation string” (string de documentaçã o). Uma string literal que aparece como pri-
meira expressã o numa classe, funçã o ou mó dulo. Ainda que sejam ignoradas quando a suíte é executada, é
93
Python Setup and Usage, Release 3.13.7
reconhecida pelo compilador que a coloca no atributo __doc__ da classe, funçã o ou mó dulo que a encapsula.
Como ficam disponíveis por meio de introspecçã o, docstrings sã o o lugar canô nico para documentaçã o do
objeto.
tipagem pato
També m conhecida como duck-typing, é um estilo de programaçã o que nã o verifica o tipo do objeto para
determinar se ele possui a interface correta; em vez disso, o mé todo ou atributo é simplesmente chamado
ou utilizado (“Se se parece com um pato e grasna como um pato, entã o deve ser um pato.”) Enfatizando
interfaces ao invé s de tipos específicos, o có digo bem desenvolvido aprimora sua flexibilidade por permitir
substituiçã o polimó rfica. Tipagem pato evita necessidade de testes que usem type() ou isinstance().
(Note, poré m, que a tipagem pato pode ser complementada com o uso de classes base abstratas.) Ao invé s
disso, sã o normalmente empregados testes hasattr() ou programaçã o EAFP.
dunder
Uma abreviaçã o informal para “double underscore” (em portuguê s, sublinhado duplo), usada ao se referir a um
método especial. Por exemplo, __init__ é frequentemente pronunciado como “dunder init”.
EAFP
Iniciais da expressã o em inglê s “easier to ask for forgiveness than permission” que significa “é mais fá cil pedir
perdã o que permissã o”. Este estilo de codificaçã o comum no Python presume a existê ncia de chaves ou atribu-
tos vá lidos e captura exceçõ es caso essa premissa se prove falsa. Este estilo limpo e rá pido se caracteriza pela
presença de vá rias instruçõ es try e except. A té cnica diverge do estilo LBYL, comum em outras linguagens
como C, por exemplo.
expressão
Uma parte da sintaxe que pode ser avaliada para algum valor. Em outras palavras, uma expressã o é a acumula-
çã o de elementos de expressã o como literais, nomes, atributos de acesso, operadores ou chamadas de funçõ es,
todos os quais retornam um valor. Em contraste com muitas outras linguagens, nem todas as construçõ es
de linguagem sã o expressõ es. També m existem instruções, as quais nã o podem ser usadas como expressõ es,
como, por exemplo, while. Atribuiçõ es també m sã o instruçõ es, nã o expressõ es.
módulo de extensão
Um mó dulo escrito em C ou C++, usando a API C do Python para interagir tanto com có digo de usuá rio
quanto do nú cleo.
f-string
Literais string prefixadas com 'f' ou 'F' sã o conhecidas como “f-strings” que é uma abreviaçã o de formatted
string literals. Veja també m PEP 498.
objeto arquivo
Um objeto que expõ e uma API orientada a arquivos (com mé todos tais como read() ou write()) para
um recurso subjacente. Dependendo da maneira como foi criado, um objeto arquivo pode mediar o acesso a
um arquivo real no disco ou outro tipo de dispositivo de armazenamento ou de comunicaçã o (por exemplo a
entrada/saída padrã o, buffers em memó ria, soquetes, pipes, etc.). Objetos arquivo també m sã o chamados de
objetos arquivo ou similares ou fluxos.
Atualmente há trê s categorias de objetos arquivo: arquivos binários brutos, arquivos binários em buffer e
arquivos textos. Suas interfaces estã o definidas no mó dulo io. A forma canô nica para criar um objeto arquivo
é usando a funçã o open().
objeto arquivo ou similar
Um sinô nimo do termo objeto arquivo.
tratador de erros e codificação do sistema de arquivos
Tratador de erros e codificaçã o usado pelo Python para decodificar bytes do sistema operacional e codificar
Unicode para o sistema operacional.
A codificaçã o do sistema de arquivos deve garantir a decodificaçã o bem-sucedida de todos os bytes abaixo
de 128. Se a codificaçã o do sistema de arquivos falhar em fornecer essa garantia, as funçõ es da API podem
levantar UnicodeError.
As funçõ es [Link]() e [Link]() podem ser usa-
das para obter o tratador de erros e codificaçã o do sistema de arquivos.
94 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.7
O tratador de erros e codificação do sistema de arquivos sã o configurados na inicializaçã o do Python pela funçã o
PyConfig_Read(): veja os membros filesystem_encoding e filesystem_errors do PyConfig.
coleta de lixo
També m conhecido como garbage collection, é o processo de liberar a memó ria quando ela nã o é mais utilizada.
Python executa a liberaçã o da memó ria atravé s da contagem de referê ncias e um coletor de lixo cíclico que é
capaz de detectar e interromper referê ncias cíclicas. O coletor de lixo pode ser controlado usando o mó dulo
gc.
95
Python Setup and Usage, Release 3.13.7
gerador
Uma funçã o que retorna um iterador gerador. É parecida com uma funçã o normal, exceto pelo fato de conter
expressõ es yield para produzir uma sé rie de valores que podem ser usados em um laço “for” ou que podem
ser obtidos um de cada vez com a funçã o next().
Normalmente refere-se a uma funçã o geradora, mas pode referir-se a um iterador gerador em alguns contextos.
Em alguns casos onde o significado desejado nã o está claro, usar o termo completo evita ambiguidade.
iterador gerador
Um objeto criado por uma funçã o geradora.
Cada yield suspende temporariamente o processamento, memorizando o estado da execuçã o (incluindo va-
riá veis locais e instruçõ es try pendentes). Quando o iterador gerador retorna, ele se recupera do ú ltimo ponto
onde estava (em contrapartida as funçõ es que iniciam uma nova execuçã o a cada vez que sã o invocadas).
expressão geradora
Uma expressão que retorna um iterador. Parece uma expressã o normal, seguido de uma clá usula for definindo
uma variá vel de laço, um intervalo, e uma clá usula if opcional. A expressã o combinada gera valores para uma
funçã o encapsuladora:
função genérica
Uma funçã o composta por vá rias funçõ es implementando a mesma operaçã o para diferentes tipos. Qual im-
plementaçã o deverá ser usada durante a execuçã o é determinada pelo algoritmo de despacho.
Veja també m a entrada despacho único no glossá rio, o decorador [Link](), e a PEP
443.
tipo genérico
Um tipo que pode ser parametrizado; tipicamente uma classe contê iner tal como list ou dict. Usado para
dicas de tipo e anotações.
Para mais detalhes, veja tipo apelido gené rico, PEP 483, PEP 484, PEP 585, e o mó dulo typing.
GIL
Veja trava global do interpretador.
trava global do interpretador
O mecanismo utilizado pelo interpretador CPython para garantir que apenas uma thread execute o bytecode
Python por vez. Isto simplifica a implementaçã o do CPython ao fazer com que o modelo de objetos (incluindo
tipos embutidos críticos como o dict) ganhem segurança implícita contra acesso concorrente. Travar todo o
interpretador facilita que o interpretador em si seja multithread, à s custas de muito do paralelismo já provido
por má quinas multiprocessador.
No entanto, alguns mó dulos de extensã o, tanto da biblioteca padrã o quanto de terceiros, sã o desenvolvidos de
forma a liberar a GIL ao realizar tarefas computacionalmente muito intensas, como compactaçã o ou cá lculos
de hash. Alé m disso, a GIL é sempre liberada nas operaçõ es de E/S.
A partir de Python 3.13, o GIL pode ser desabilitado usando a configuraçã o de construçã o --disable-gil.
Depois de construir Python com essa opçã o, o có digo deve ser executado com a opçã o -X gil=0 ou a variá vel
de ambiente PYTHON_GIL=0 deve estar definida. Esse recurso provê um desempenho melhor para aplicaçõ es
com mú ltiplas threads e torna mais fá cil o uso eficiente de CPUs com mú ltiplos nú cleos. Para mais detalhes,
veja PEP 703.
pyc baseado em hash
Um arquivo de cache em bytecode que usa hash ao invé s do tempo, no qual o arquivo de có digo-fonte foi
modificado pela ú ltima vez, para determinar a sua validade. Veja pyc-invalidation.
hasheável
Um objeto é hasheável se tem um valor de hash que nunca muda durante seu ciclo de vida (precisa ter um
mé todo __hash__()) e pode ser comparado com outros objetos (precisa ter um mé todo __eq__()). Objetos
hasheá veis que sã o comparados como iguais devem ter o mesmo valor de hash.
96 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.7
A hasheabilidade faz com que um objeto possa ser usado como uma chave de dicioná rio e como um membro
de conjunto, pois estas estruturas de dados utilizam os valores de hash internamente.
A maioria dos objetos embutidos imutá veis do Python sã o hasheá veis; containers mutá veis (tais como listas
ou dicioná rios) nã o sã o; containers imutá veis (tais como tuplas e frozensets) sã o hasheá veis apenas se os seus
elementos sã o hasheá veis. Objetos que sã o instâ ncias de classes definidas pelo usuá rio sã o hasheá veis por
padrã o. Todos eles comparam de forma desigual (exceto entre si mesmos), e o seu valor hash é derivado a
partir do seu id().
IDLE
Um ambiente de desenvolvimento e aprendizado integrado para Python. idle é um editor bá sico e um ambiente
interpretador que vem junto com a distribuiçã o padrã o do Python.
imortal
Objetos imortais sã o um detalhe da implementaçã o do CPython introduzida na PEP 683.
Se um objeto é imortal, sua contagem de referências nunca é modificada e, portanto, nunca é desalocado en-
quanto o interpretador está em execuçã o. Por exemplo, True e None sã o imortais no CPython.
imutável
Um objeto que possui um valor fixo. Objetos imutá veis incluem nú meros, strings e tuplas. Estes objetos nã o
podem ser alterados. Um novo objeto deve ser criado se um valor diferente tiver de ser armazenado. Objetos
imutá veis tê m um papel importante em lugares onde um valor constante de hash seja necessá rio, como por
exemplo uma chave em um dicioná rio.
caminho de importação
Uma lista de localizaçõ es (ou entradas de caminho) que sã o buscadas pelo localizador baseado no caminho por
mó dulos para importar. Durante a importaçã o, esta lista de localizaçõ es usualmente vem a partir de [Link],
mas para subpacotes ela també m pode vir do atributo __path__ de pacotes-pai.
importação
O processo pelo qual o có digo Python em um mó dulo é disponibilizado para o có digo Python em outro mó dulo.
importador
Um objeto que localiza e carrega um mó dulo; Tanto um localizador e o objeto carregador.
interativo
Python tem um interpretador interativo, o que significa que você pode digitar instruçõ es e expressõ es no prompt
do interpretador, executá -los imediatamente e ver seus resultados. Apenas execute python sem argumentos
(possivelmente selecionando-o a partir do menu de aplicaçõ es de seu sistema operacional). O interpretador
interativo é uma maneira poderosa de testar novas ideias ou aprender mais sobre mó dulos e pacotes (lembre-se
do comando help(x)). Para saber mais sobre modo interativo, veja tut-interac.
interpretado
Python é uma linguagem interpretada, em oposiçã o à quelas que sã o compiladas, embora esta distinçã o possa
ser nebulosa devido à presença do compilador de bytecode. Isto significa que os arquivos-fontes podem ser
executados diretamente sem necessidade explícita de se criar um arquivo executá vel. Linguagens interpretadas
normalmente tê m um ciclo de desenvolvimento/depuraçã o mais curto que as linguagens compiladas, apesar
de seus programas geralmente serem executados mais lentamente. Veja també m interativo.
desligamento do interpretador
Quando solicitado para desligar, o interpretador Python entra em uma fase especial, onde ele gradualmente
libera todos os recursos alocados, tais como mó dulos e vá rias estruturas internas críticas. Ele també m faz
diversas chamadas para o coletor de lixo. Isto pode disparar a execuçã o de có digo em destrutores definidos
pelo usuá rio ou funçã o de retorno de referê ncia fraca. Có digo executado durante a fase de desligamento pode
encontrar diversas exceçõ es, pois os recursos que ele depende podem nã o funcionar mais (exemplos comuns
sã o os mó dulos de bibliotecas, ou os mecanismos de avisos).
A principal razã o para o interpretador desligar, é que o mó dulo __main__ ou o script sendo executado ter-
minou sua execuçã o.
iterável
Um objeto capaz de retornar seus membros um de cada vez. Exemplos de iterá veis incluem todos os tipos de
sequê ncia (tais como list, str e tuple) e alguns tipos de nã o-sequê ncia, como o dict e objetos arquivo,
97
Python Setup and Usage, Release 3.13.7
alé m dos objetos de quaisquer classes que você definir com um mé todo __iter__() ou __getitem__()
que implementam a semâ ntica de sequência.
Iterá veis podem ser usados em um laço for e em vá rios outros lugares em que uma sequê ncia é necessá ria
(zip(), map(), …). Quando um objeto iterá vel é passado como argumento para a funçã o embutida iter(),
ela retorna um iterador para o objeto. Este iterador é adequado para se varrer todo o conjunto de valores. Ao
usar iterá veis, normalmente nã o é necessá rio chamar iter() ou lidar com os objetos iteradores em si. A
instruçã o for faz isso automaticamente para você , criando uma variá vel temporá ria para armazenar o iterador
durante a execuçã o do laço. Veja també m iterador, sequência, e gerador.
iterador
Um objeto que representa um fluxo de dados. Repetidas chamadas ao mé todo __next__() de um iterador
(ou passando o objeto para a funçã o embutida next()) vã o retornar itens sucessivos do fluxo. Quando nã o
houver mais dados disponíveis uma exceçã o StopIteration será levantada. Neste ponto, o objeto iterador
se esgotou e quaisquer chamadas subsequentes a seu mé todo __next__() vã o apenas levantar a exceçã o
StopIteration novamente. Iteradores precisam ter um mé todo __iter__() que retorne o objeto iterador
em si, de forma que todo iterador també m é iterá vel e pode ser usado na maioria dos lugares em que um iterá vel
é requerido. Uma notá vel exceçã o é có digo que tenta realizar passagens em mú ltiplas iteraçõ es. Um objeto
contê iner (como uma list) produz um novo iterador a cada vez que você passá -lo para a funçã o iter() ou
utilizá -lo em um laço for. Tentar isso com o mesmo iterador apenas iria retornar o mesmo objeto iterador
esgotado já utilizado na iteraçã o anterior, como se fosse um contê iner vazio.
Mais informaçõ es podem ser encontradas em typeiter.
O CPython nã o aplica consistentemente o requisito de que um iterador defina __iter__(). E també m observe
que o CPython com threads livres nã o garante a segurança do thread das operaçõ es do iterador.
função chave
Uma funçã o chave ou funçã o colaçã o é um chamá vel que retorna um valor usado para ordenaçã o ou classifi-
caçã o. Por exemplo, [Link]() é usada para produzir uma chave de ordenaçã o que leva o locale
em consideraçã o para fins de ordenaçã o.
Uma porçã o de ferramentas no Python aceitam funçõ es chave para controlar como os elementos sã o orde-
nados ou agrupados. Algumas delas incluem min(), max(), sorted(), [Link](), [Link](),
[Link](), [Link]() e [Link]().
Há vá rias maneiras de se criar funçõ es chave. Por exemplo, o mé todo [Link]() pode servir como uma
funçã o chave para ordenaçõ es insensíveis à caixa. Alternativamente, uma funçã o chave ad-hoc pode ser cons-
truída a partir de uma expressã o lambda, como lambda r: (r[0], r[2]). Alé m disso, operator.
attrgetter(), [Link]() e [Link]() sã o trê s construtores de fun-
çã o chave. Consulte o guia de Ordenaçã o para ver exemplos de como criar e utilizar funçõ es chave.
argumento nomeado
Veja argumento.
lambda
Uma funçã o de linha anô nima consistindo de uma ú nica expressão, que é avaliada quando a funçã o é chamada.
A sintaxe para criar uma funçã o lambda é lambda [parameters]: expression
LBYL
Iniciais da expressã o em inglê s “look before you leap”, que significa algo como “olhe antes de pisar”. Este estilo
de codificaçã o testa as pré -condiçõ es explicitamente antes de fazer chamadas ou buscas. Este estilo contrasta
com a abordagem EAFP e é caracterizada pela presença de muitas instruçõ es if.
Em um ambiente multithread, a abordagem LBYL pode arriscar a introduçã o de uma condiçã o de corrida
entre “o olhar” e “o pisar”. Por exemplo, o có digo if key in mapping: return mapping[key] pode
falhar se outra thread remover key do mapping apó s o teste, mas antes da olhada. Esse problema pode ser
resolvido com travas ou usando a abordagem EAFP.
analisador léxico
Nome formal para o tokenizador; veja token.
lista
Uma sequência embutida no Python. Apesar do seu nome, é mais pró ximo de um vetor em outras linguagens
do que uma lista encadeada, como o acesso aos elementos é da ordem O(1).
98 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.7
compreensão de lista
Uma maneira compacta de processar todos ou parte dos elementos de uma sequê ncia e retornar os resultados
em uma lista. result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] gera
uma lista de strings contendo nú meros hexadecimais (0x..) no intervalo de 0 a 255. A clá usula if é opcional.
Se omitida, todos os elementos no range(256) serã o processados.
carregador
Um objeto que carrega um mó dulo. Ele deve definir os mé todos exec_module() e create_module() para
implementar a interface Loader. Um carregador é normalmente retornado por um localizador. Veja també m:
• finders-and-loaders
• [Link]
• PEP 302
codificação da localidade
No Unix, é a codificaçã o da localidade do LC_CTYPE, que pode ser definida com locale.
setlocale(locale.LC_CTYPE, new_locale).
No Windows, é a pá gina de có digo ANSI (ex: "cp1252").
No Android e no VxWorks, o Python usa "utf-8" como a codificaçã o da localidade.
[Link]() pode ser usado para obter a codificaçã o da localidade.
localizador de metacaminho
Um localizador retornado por uma busca de sys.meta_path. Localizadores de metacaminho sã o relaciona-
dos a, mas diferentes de, localizadores de entrada de caminho.
Veja [Link] para os mé todos que localizadores de metacaminho implementam.
metaclasse
A classe de uma classe. Definiçõ es de classe criam um nome de classe, um dicioná rio de classe e uma lista
de classes base. A metaclasse é responsá vel por receber estes trê s argumentos e criar a classe. A maioria das
linguagens de programaçã o orientadas a objetos provê uma implementaçã o default. O que torna o Python
especial é o fato de ser possível criar metaclasses personalizadas. A maioria dos usuá rios nunca vai preci-
sar deste recurso, mas quando houver necessidade, metaclasses possibilitam soluçõ es poderosas e elegantes.
Metaclasses tê m sido utilizadas para gerar registros de acesso a atributos, para incluir proteçã o contra acesso
concorrente, rastrear a criaçã o de objetos, implementar singletons, dentre muitas outras tarefas.
Mais informaçõ es podem ser encontradas em metaclasses.
método
Uma funçã o que é definida dentro do corpo de uma classe. Se chamada como um atributo de uma instâ ncia
daquela classe, o mé todo receberá a instâ ncia do objeto como seu primeiro argumento (que comumente é
chamado de self). Veja função e escopo aninhado.
ordem de resolução de métodos
Ordem de resoluçã o de mé todos é a ordem em que os membros de uma classe base sã o buscados durante a
pesquisa. Veja python_2.3_mro para detalhes do algoritmo usado pelo interpretador do Python desde a versã o
2.3.
módulo
Um objeto que serve como uma unidade organizacional de có digo Python. Os mó dulos tê m um espaço de
99
Python Setup and Usage, Release 3.13.7
nomes contendo objetos Python arbitrá rios. Os mó dulos sã o carregados pelo Python atravé s do processo de
importação.
Veja també m pacote.
spec de módulo
Um espaço de nomes que conté m as informaçõ es relacionadas à importaçã o usadas para carregar um mó dulo.
Uma instâ ncia de [Link].
Veja també m module-specs.
MRO
Veja ordem de resolução de métodos.
mutável
Objeto mutá vel é aquele que pode modificar seus valor mas manter seu id(). Veja també m imutável.
tupla nomeada
O termo “tupla nomeada” é aplicado a qualquer tipo ou classe que herda de tupla e cujos elementos indexá veis
també m sã o acessíveis usando atributos nomeados. O tipo ou classe pode ter outras funcionalidades també m.
Diversos tipos embutidos sã o tuplas nomeadas, incluindo os valores retornados por [Link]() e
[Link](). Outro exemplo é sys.float_info:
Algumas tuplas nomeadas sã o tipos embutidos (tal como os exemplos acima). Alternativamente, uma tupla
nomeada pode ser criada a partir de uma definiçã o de classe regular, que herde de tuple e que defina campos
nomeados. Tal classe pode ser escrita a mã o, ou ela pode ser criada herdando [Link] ou com
uma funçã o fá brica [Link](). As duas ú ltimas té cnicas també m adicionam alguns
mé todos extras, que podem nã o ser encontrados quando foi escrita manualmente, ou em tuplas nomeadas
embutidas.
espaço de nomes
O lugar em que uma variá vel é armazenada. Espaços de nomes sã o implementados como dicioná rios. Exis-
tem os espaços de nomes local, global e nativo, bem como espaços de nomes aninhados em objetos (em
mé todos). Espaços de nomes suportam modularidade ao prevenir conflitos de nomes. Por exemplo, as fun-
çõ es __builtin__.open() e [Link]() sã o diferenciadas por seus espaços de nomes. Espaços de nomes
també m auxiliam na legibilidade e na manutenibilidade ao torar mais claro quais mó dulos implementam uma
funçã o. Escrever [Link]() ou [Link](), por exemplo, deixa claro que estas funçõ es sã o
implementadas pelos mó dulos random e itertools respectivamente.
pacote de espaço de nomes
Um pacote que serve apenas como contê iner para subpacotes. Pacotes de espaços de nomes podem nã o ter
representaçã o física, e especificamente nã o sã o como um pacote regular porque eles nã o tem um arquivo
__init__.py.
Pacotes de espaço de nomes permitem que vá rios pacotes instalá veis individualmente tenham um pacote pai
comum. Caso contrá rio, é recomendado usar um pacote regular.
Para mais informaçõ es, veja PEP 420 e reference-namespace-package.
Veja també m módulo.
escopo aninhado
A habilidade de referir-se a uma variá vel em uma definiçã o de fechamento. Por exemplo, uma funçã o definida
dentro de outra pode referenciar variá veis da funçã o externa. Perceba que escopos aninhados por padrã o
funcionam apenas por referê ncia e nã o por atribuiçã o. Variá veis locais podem ler e escrever no escopo mais
interno. De forma similar, variá veis globais podem ler e escrever para o espaço de nomes global. O nonlocal
permite escrita para escopos externos.
• somente-posicional: especifica um argumento que pode ser fornecido apenas por posiçã o. Parâ metros
somente-posicionais podem ser definidos incluindo o caractere / na lista de parâ metros da definiçã o da
funçã o apó s eles, por exemplo somentepos1 e somentepos2 a seguir:
• somente-nomeado: especifica um argumento que pode ser passado para a funçã o somente por nome.
Parâ metros somente-nomeados podem ser definidos com um simples parâ metro var-posicional ou um *
antes deles na lista de parâ metros na definiçã o da funçã o, por exemplo somente_nom1 and somente_nom2
a seguir:
• var-posicional: especifica que uma sequê ncia arbitrá ria de argumentos posicionais pode ser fornecida
(em adiçã o a qualquer argumento posicional já aceito por outros parâ metros). Tal parâ metro pode ser
definido colocando um * antes do nome do parâ metro, por exemplo args a seguir:
• var-nomeado: especifica que, arbitrariamente, muitos argumentos nomeados podem ser fornecidos (em
adiçã o a qualquer argumento nomeado já aceito por outros parâ metros). Tal parâ metro pode definido
colocando-se ** antes do nome, por exemplo kwargs no exemplo acima.
Parâ metros podem especificar tanto argumentos opcionais quanto obrigató rios, assim como valores padrã o
para alguns argumentos opcionais.
Veja també m o termo argumento no glossá rio, a pergunta do FAQ sobre a diferença entre argumentos e parâ -
metros, a classe [Link], a seçã o function e a PEP 362.
entrada de caminho
Um local ú nico no caminho de importação que o localizador baseado no caminho consulta para encontrar
mó dulos a serem importados.
101
Python Setup and Usage, Release 3.13.7
Muitas outras linguagens nã o tê m esse tipo de construçã o, entã o as pessoas que nã o estã o familiarizadas com
o Python usam um contador numé rico:
for i in range(len(comida)):
print(comida[i])
nome qualificado
Um nome pontilhado (quando 2 termos sã o ligados por um ponto) que mostra o “path” do escopo global de um
mó dulo para uma classe, funçã o ou mé todo definido num determinado mó dulo, conforme definido pela PEP
3155. Para funçõ es e classes de nível superior, o nome qualificado é o mesmo que o nome do objeto:
>>> class C:
... class D:
... def metodo(self):
... pass
...
>>> C.__qualname__
'C'
>>> C.D.__qualname__
'C.D'
>>> [Link].__qualname__
'[Link]'
Quando usado para se referir a mó dulos, o nome totalmente qualificado significa todo o caminho pontilhado
para o mó dulo, incluindo quaisquer pacotes pai, por exemplo: [Link]:
contagem de referências
O nú mero de referê ncias a um objeto. Quando a contagem de referê ncias de um objeto cai para zero, ele é
desalocado. Alguns objetos sã o imortais e tê m contagens de referê ncias que nunca sã o modificadas e, portanto,
os objetos nunca sã o desalocados. A contagem de referê ncias geralmente nã o é visível para o có digo Python,
mas é um elemento-chave da implementaçã o do CPython. Os programadores podem chamar a funçã o sys.
getrefcount() para retornar a contagem de referê ncias para um objeto específico.
Em CPython, as contagens de referê ncias nã o sã o consideradas valores está veis ou bem definidos; o nú mero de
referê ncias a um objeto e como esse nú mero é afetado pelo có digo Python pode ser diferente entre as versõ es.
pacote regular
Um pacote tradicional, como um diretó rio contendo um arquivo __init__.py.
Veja també m pacote de espaço de nomes.
REPL
Um acrô nimo para “read–eval–print loop”, outro nome para o console interativo do interpretador.
__slots__
Uma declaraçã o dentro de uma classe que economiza memó ria pré -declarando espaço para atributos de ins-
tâ ncias, e eliminando dicioná rios de instâ ncias. Apesar de popular, a té cnica é um tanto quanto complicada
de acertar, e é melhor se for reservada para casos raros, onde existe uma grande quantidade de instâ ncias em
uma aplicaçã o onde a memó ria é crítica.
sequência
Um iterável com suporte para acesso eficiente a seus elementos atravé s de índices inteiros via mé todo es-
pecial __getitem__() e que define o mé todo __len__() que devolve o tamanho da sequê ncia. Alguns
103
Python Setup and Usage, Release 3.13.7
tipos de sequê ncia embutidos sã o: list, str, tuple, e bytes. Note que dict també m tem suporte para
__getitem__() e __len__(), mas é considerado um mapeamento e nã o uma sequê ncia porque a busca
usa uma chave hasheável arbitrá ria em vez de inteiros.
A classe base abstrata [Link] define uma interface mais rica que vai alé m
de apenas __getitem__() e __len__(), adicionando count(), index(), __contains__(), e
__reversed__(). Tipos que implementam essa interface podem ser explicitamente registrados usando
register(). Para mais documentaçã o sobre mé todos de sequê ncias em geral, veja Operaçõ es comuns de
sequê ncias.
compreensão de conjunto
Uma maneira compacta de processar todos ou parte dos elementos em iterá vel e retornar um conjunto com
os resultados. results = {c for c in 'abracadabra' if c not in 'abc'} gera um conjunto de
strings {'r', 'd'}. Veja comprehensions.
despacho único
Uma forma de despacho de função genérica onde a implementaçã o é escolhida com base no tipo de um ú nico
argumento.
fatia
Um objeto geralmente contendo uma parte de uma sequência. Uma fatia é criada usando a notaçã o de subscrito
[] pode conter també m até dois pontos entre nú meros, como em variable_name[Link]. A notaçã o de
suporte (subscrito) utiliza objetos slice internamente.
suavemente descontinuado
Uma API suavemente descontinuada nã o deve ser usada em có digo novo, mas é seguro para có digo já existente
usá -la. A API continua documentada e testada, mas nã o será melhorada.
A descontinuaçã o suave, diferentemente da descontinuaçã o normal, nã o planeja remover a API e nã o emitirá
avisos.
Veja PEP 387: Descontinuaçã o suave.
método especial
Um mé todo que é chamado implicitamente pelo Python para executar uma certa operaçã o em um tipo, como
uma adiçã o por exemplo. Tais mé todos tem nomes iniciando e terminando com dois underscores. Mé todos
especiais estã o documentados em specialnames.
biblioteca padrão
A coleçã o de pacotes, módulos e módulos de extensão distribuída como parte do pacote do interpretador Python
oficial. A relaçã o exata de elementos da coleçã o pode variar de acordo com a plataforma, bibliotecas de sistema
disponíveis ou outros crité rios. A documentaçã o pode ser encontrada em library-index.
Veja també m sys.stdlib_module_names para obter uma lista de todos os possíveis nomes de mó dulos da
biblioteca padrã o.
instrução
Uma instruçã o é parte de uma suíte (um “bloco” de có digo). Uma instruçã o é ou uma expressão ou uma de
vá rias construçõ es com uma palavra reservada, tal como if, while ou for.
verificador de tipo estático
Uma ferramenta externa que lê o có digo Python e o analisa, procurando por problemas como tipos incorretos.
Consulte també m dicas de tipo e o mó dulo typing.
stdlib
Uma abreviaçã o para o termo biblioteca padrão em inglê s (standard library).
referência forte
Na API C do Python, uma referê ncia forte é uma referê ncia a um objeto que pertence ao có digo que conté m a
referê ncia. A referê ncia forte é obtida chamando Py_INCREF() quando a referê ncia é criada e liberada com
Py_DECREF() quando a referê ncia é excluída.
A funçã o Py_NewRef() pode ser usada para criar uma referê ncia forte para um objeto. Normalmente, a
funçã o Py_DECREF() deve ser chamada na referê ncia forte antes de sair do escopo da referê ncia forte, para
evitar o vazamento de uma referê ncia.
def remove_tons_de_cinza(
cores: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
pass
105
Python Setup and Usage, Release 3.13.7
class C:
campo: 'anotação'
Anotaçõ es de variá veis sã o normalmente usadas para dicas de tipo: por exemplo, espera-se que esta variá vel
receba valores do tipo int:
contagem: int = 0
A documentaçã o do Python é gerada a partir de fontes reStructuredText usando Sphinx, um gerador de documentaçã o
criado originalmente para Python e agora mantido como um projeto independente.
O desenvolvimento da documentaçã o e de suas ferramentas é um esforço totalmente voluntá rio, como Python em
si. Se você quer contribuir, por favor dê uma olhada na pá gina reporting-bugs para informaçõ es sobre como fazer.
Novos voluntá rios sã o sempre bem-vindos!
Agradecimentos especiais para:
• Fred L. Drake, Jr., o criador do primeiro conjunto de ferramentas para documentar Python e autor de boa
parte do conteú do;
• O projeto Docutils por criar reStructuredText e o pacote Docutils;
• Fredrik Lundh, pelo seu projeto de referê ncia alternativa em Python, do qual Sphinx pegou muitas boas ideias.
107
Python Setup and Usage, Release 3.13.7
História e Licença
® Nota
109
Python Setup and Usage, Release 3.13.7
(1) Compatível com a GPL nã o significa que estamos distribuindo Python sob a GPL. Todas as licenças do
Python, ao contrá rio da GPL, permitem distribuir uma versã o modificada sem fazer alteraçõ es em có digo
aberto. As licenças compatíveis com a GPL possibilitam combinar o Python com outro software lançado
sob a GPL; os outros nã o.
(2) De acordo com Richard Stallman, 1.6.1 nã o é compatível com GPL, porque sua licença tem uma clá usula
de escolha de lei. De acordo com a CNRI, no entanto, o advogado de Stallman disse ao advogado da CNRI
que 1.6.1 “nã o é incompatível” com a GPL.
Graças aos muitos voluntá rios externos que trabalharam sob a direçã o de Guido para tornar esses lançamentos pos-
síveis.
2. Subject to the terms and conditions of this License Agreement, PSF hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python alone or in any derivative
version, provided, however, that PSF's License Agreement and PSF's notice of
copyright, i.e., "Copyright © 2001-2024 Python Software Foundation; All Rights
Reserved" are retained in Python alone or in any derivative version
prepared by Licensee.
2. Subject to the terms and conditions of this BeOpen Python License Agreement,
BeOpen hereby grants Licensee a non-exclusive, royalty-free, world-wide license
to reproduce, analyze, test, perform and/or display publicly, prepare derivative
works, distribute, and otherwise use the Software alone or in any derivative
version, provided, however, that the BeOpen Python License is retained in the
Software, alone or in any derivative version prepared by Licensee.
4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE SOFTWARE FOR
ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF USING,
MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY DERIVATIVE THEREOF, EVEN IF
ADVISED OF THE POSSIBILITY THEREOF.
2. Subject to the terms and conditions of this License Agreement, CNRI hereby
grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
analyze, test, perform and/or display publicly, prepare derivative works,
distribute, and otherwise use Python 1.6.1 alone or in any derivative version,
provided, however, that CNRI's License Agreement and CNRI's notice of copyright,
i.e., "Copyright © 1995-2001 Corporation for National Research Initiatives; All
Rights Reserved" are retained in Python 1.6.1 alone or in any derivative version
prepared by Licensee. Alternately, in lieu of CNRI's License Agreement,
Licensee may substitute the following text (omitting the quotes): "Python 1.6.1
is made available subject to the terms and conditions in CNRI's License
Agreement. This Agreement together with Python 1.6.1 may be located on the
internet using the following unique, persistent identifier (known as a handle):
1895.22/1013. This Agreement may also be obtained from a proxy server on the
internet using the following URL: [Link]
4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS" basis. CNRI
MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE,
BUT NOT LIMITATION, CNRI MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY
OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF
PYTHON 1.6.1 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 1.6.1 FOR
ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF
MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1, OR ANY DERIVATIVE
THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided that
the above copyright notice appear in all copies and that both that copyright
notice and this permission notice appear in supporting documentation, and that
the name of Stichting Mathematisch Centrum or CWI not be used in advertising or
publicity pertaining to distribution of the software without specific, written
prior permission.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
C.3.2 Soquetes
O mó dulo socket usa as funçõ es getaddrinfo() e getnameinfo(), que sã o codificadas em arquivos de origem
separados do Projeto WIDE, [Link]
THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
Permission to use, copy, modify, and distribute this Python software and
its associated documentation for any purpose without fee is hereby
granted, provided that the above copyright notice appears in all copies,
and that both that copyright notice and this permission notice appear in
supporting documentation, and that the name of neither Automatrix,
Bioreason or Mojam Media be used in advertising or publicity pertaining to
distribution of the software without specific, written prior permission.
SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANT-
ABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR
BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THIS SOFTWARE.
C.3.8 test_epoll
O mó dulo test.test_epoll conté m o seguinte aviso:
Copyright (c) 2001-2006 Twisted Matrix Laboratories.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
C.3.10 SipHash24
O arquivo Python/pyhash.c conté m a implementaçã o de Marek Majkowski do algoritmo SipHash24 de Dan
Bernstein. Conté m a seguinte nota:
<MIT License>
Copyright (c) 2013 Marek Majkowski <marek@[Link]>
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
(continua na pró xima pá gina)
Original location:
[Link]
C.3.12 OpenSSL
Os mó dulos hashlib, posix e ssl usam a biblioteca OpenSSL para desempenho adicional se forem disponibi-
lizados pelo sistema operacional. Alé m disso, os instaladores do Windows e do Mac OS X para Python podem
incluir uma có pia das bibliotecas do OpenSSL, portanto incluímos uma có pia da licença do OpenSSL aqui: Para o
lançamento do OpenSSL 3.0, e lançamentos posteriores derivados deste, se aplica a Apache License v2:
Apache License
Version 2.0, January 2004
[Link]
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
(continua na pró xima pá gina)
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
C.3.13 expat
A extensã o pyexpat é construída usando uma có pia incluída das fontes de expatriadas, a menos que a compilaçã o
esteja configurada --with-system-expat:
Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
and Clark Cooper
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
C.3.14 libffi
A extensã o C _ctypes subjacente ao mó dulo ctypes é construída usando uma có pia incluída das fontes do libffi,
a menos que a construçã o esteja configurada com --with-system-libffi:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
C.3.15 zlib
A extensã o zlib é construída usando uma có pia incluída das fontes zlib se a versã o do zlib encontrada no sistema
for muito antiga para ser usada na construçã o:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
C.3.16 cfuhash
A implementaçã o da tabela de hash usada pelo tracemalloc é baseada no projeto cfuhash:
C.3.17 libmpdec
A extensã o C _decimal subjacente ao mó dulo decimal é construída usando uma có pia incluída da biblioteca
libmpdec, a menos que a construçã o esteja configurada com --with-system-libmpdec:
Copyright (c) 2008-2020 Stefan Krah. All rights reserved.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.
C.3.19 mimalloc
Licença MIT:
Copyright (c) 2018-2021 Microsoft Corporation, Daan Leijen
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
C.3.20 asyncio
Partes do mó dulo asyncio sã o incorporadas do uvloop 0.16, que é distribuído sob a licença MIT:
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Direitos autorais
129
Python Setup and Usage, Release 3.13.7
Não alfabético C
..., 89 -c
-? opção de linha de comando, 4
opção de linha de comando, 5 caminho de importação, 97
%APPDATA%, 49 carregador, 99
>>>, 89 CC
__future__, 95 opção de linha de comando, 27
__slots__, 103 CFLAGS, 30, 40, 41
opção de linha de comando, 27
A CFLAGS_NODIST, 40, 41
aguardável, 90 chamável, 91
ambiente virtual, 106 --check-hash-based-pycs
analisador léxico, 98 opção de linha de comando, 6
anotação, 89 classe, 91
anotação de função, 95 classe base abstrata, 89
anotação de variável, 106 classe estilo novo, 101
apelido de tipo, 105 codificação da localidade, 99
API provisória, 102 codificador de texto, 105
argumento, 89 coleta de lixo, 95
argumento nomeado, 98 compreensão de conjunto, 104
argumento posicional, 102 compreensão de dicionário, 93
arquivo binário, 91 compreensão de lista, 99
arquivo texto, 105 CONFIG_SITE
aspas triplas, 105 opção de linha de comando, 36
atributo, 90 contagem de referências, 103
contexto, 92
B contexto atual, 93
-B contíguo, 92
opção de linha de comando, 6 contíguo C, 92
-b contíguo Fortran, 92
opção de linha de comando, 6 corrotina, 92
BDFL, 91 CPP
biblioteca padrão, 104 opção de linha de comando, 27
BOLT_APPLY_FLAGS CPPFLAGS, 39, 42
opção de linha de comando, 31 opção de linha de comando, 27
BOLT_INSTRUMENT_FLAGS CPython, 93
opção de linha de comando, 31 CURSES_CFLAGS
--build opção de linha de comando, 28
opção de linha de comando, 36 CURSES_LIBS
bytecode, 91 opção de linha de comando, 28
BZIP2_CFLAGS
opção de linha de comando, 28 D
BZIP2_LIBS -d
opção de linha de comando, 28
131
Python Setup and Usage, Release 3.13.7
F J
f-string, 94 -J
132 Índice
Python Setup and Usage, Release 3.13.7
Índice 133
Python Setup and Usage, Release 3.13.7
--enable-universalsdk, 35 --with-assertions, 33
--enable-wasm-dynamic-linking, 29 --with-build-python, 36
--enable-wasm-pthreads, 29 --with-builtin-hashlib-hashes, 35
--exec-prefix, 30 --with-computed-gotos, 31
GDBM_CFLAGS, 28 --with-dbmliborder, 25
GDBM_LIBS, 28 --with-dtrace, 33
-h, 5 --with-emscripten-target, 29
--help, 5 --with-ensurepip, 30
--help-all, 5 --with-framework-name, 36
--help-env, 5 --with-hash-algorithm, 35
--help-xoptions, 5 --with-libc, 34
--host, 36 --with-libm, 34
HOSTRUNNER, 37 --with-libs, 34
-I, 7 --with-lto, 31
-i, 6 --with-memory-sanitizer, 33
-J, 11 --with-openssl, 34
LDFLAGS, 28 --with-openssl-rpath, 34
LIBB2_CFLAGS, 28 --without-c-locale-coercion, 25
LIBB2_LIBS, 28 --without-decimal-contextvar, 25
LIBEDIT_CFLAGS, 28 --without-doc-strings, 31
LIBEDIT_LIBS, 28 --without-freelists, 25
LIBFFI_CFLAGS, 28 --without-mimalloc, 31
LIBFFI_LIBS, 28 --without-pymalloc, 31
LIBLZMA_CFLAGS, 28 --without-readline, 34
LIBLZMA_LIBS, 28 --without-static-libpython, 33
LIBMPDEC_CFLAGS, 28 --with-pkg-config, 25
LIBMPDEC_LIBS, 28 --with-platlibdir, 25
LIBREADLINE_CFLAGS, 29 --with-pydebug, 32
LIBREADLINE_LIBS, 29 --with-readline, 34
LIBS, 28 --with-ssl-default-suites, 35
LIBSQLITE3_CFLAGS, 29 --with-strict-overflow, 32
LIBSQLITE3_LIBS, 29 --with-suffix, 24
LIBUUID_CFLAGS, 29 --with-system-expat, 34
LIBUUID_LIBS, 29 --with-system-libmpdec, 34
-m, 4 --with-thread-sanitizer, 33
MACHDEP, 28 --with-trace-refs, 32
-O, 7 --with-tzpath, 24
-OO, 7 --with-undefined-behavior-sanitizer,
-P, 7 33
PANEL_CFLAGS, 29 --with-universal-archs, 35
PANEL_LIBS, 29 --with-valgrind, 33
PKG_CONFIG, 27 --with-wheel-pkg-dir, 25
PKG_CONFIG_LIBDIR, 27 -X, 9
PKG_CONFIG_PATH, 27 -x, 9
--prefix, 30 ZLIB_CFLAGS, 29
-q, 7 ZLIB_LIBS, 29
-R, 7 operador morsa, 106
-S, 8 OPT, 33
-s, 7 ordem de resolução de métodos, 99
TCLTK_CFLAGS, 29
TCLTK_LIBS, 29 P
-u, 8 -P
-V, 6 opção de linha de comando, 7
-v, 8 pacote, 101
--version, 6 pacote de espaço de nomes, 100
-W, 8 pacote provisório, 102
--with-address-sanitizer, 33 pacote regular, 103
--with-app-store-compliance, 36 PANEL_CFLAGS
134 Índice
Python Setup and Usage, Release 3.13.7
Índice 135
Python Setup and Usage, Release 3.13.7
T PY_CORE_CFLAGS, 41
TCLTK_CFLAGS PY_CORE_LDFLAGS, 42
opção de linha de comando, 29 PY_CPPFLAGS, 39
TCLTK_LIBS PY_LDFLAGS, 42
opção de linha de comando, 29 PY_LDFLAGS_NODIST, 42
TEMP, 49 PY_PYTHON, 57
threads livres, 95 PY_STDMODULE_CFLAGS, 41
tipagem pato, 94 PYLAUNCHER_ALLOW_INSTALL, 58
tipo, 105 PYLAUNCHER_ALWAYS_INSTALL, 58
tipo genérico, 96 PYLAUNCHER_DEBUG, 58
token, 105 PYLAUNCHER_DRYRUN, 58
tratador de erros e codificação do PYLAUNCHER_NO_SEARCH_PATH, 56
sistema de arquivos, 94 PYTHON_BASIC_REPL, 17
trava global do interpretador, 96 PYTHON_COLORS, 11, 17
tupla nomeada, 100 PYTHON_CPU_COUNT, 10, 16
PYTHON_FROZEN_MODULES, 10, 16
U PYTHON_GIL, 10, 17, 96
PYTHON_HISTORY, 17
-u
PYTHON_JIT, 17
opção de linha de comando, 8
PYTHON_PERF_JIT_SUPPORT, 10, 16
V PYTHON_PRESITE, 10, 17
PYTHONASYNCIODEBUG, 14
-V
PYTHONBREAKPOINT, 12
opção de linha de comando, 6
PYTHONCASEOK, 12
-v
PYTHONCOERCECLOCALE, 15, 25
opção de linha de comando, 8
PYTHONDEBUG, 6, 12, 32
variável de ambiente
PYTHONDEVMODE, 9, 16
%APPDATA%, 49
PYTHONDONTWRITEBYTECODE, 6, 12
BASECFLAGS, 40
PYTHONDUMPREFS, 17, 33
BASECPPFLAGS, 39
PYTHONDUMPREFSFILE, 17
BLDSHARED, 42
PYTHONEXECUTABLE, 13
CC, 40
PYTHONFAULTHANDLER, 9, 14
CCSHARED, 40
PYTHONHASHSEED, 7, 12, 13
CFLAGS, 30, 40, 41
PYTHONHOME, 6, 11, 59, 60, 83
CFLAGS_ALIASING, 40
PYTHONINSPECT, 7, 12
CFLAGS_NODIST, 40, 41
PYTHONINTMAXSTRDIGITS, 9, 13
CFLAGSFORSHARED, 40
PYTHONIOENCODING, 13, 15
COMPILEALL_OPTS, 40
PYTHONLEGACYWINDOWSFSENCODING, 15
CONFIGURE_CFLAGS, 40
PYTHONLEGACYWINDOWSSTDIO, 13, 15
CONFIGURE_CFLAGS_NODIST, 40
PYTHONMALLOC, 14, 15, 31
CONFIGURE_CPPFLAGS, 39
PYTHONMALLOCSTATS, 14
CONFIGURE_LDFLAGS, 41
PYTHONNODEBUGRANGES, 10, 16
CONFIGURE_LDFLAGS_NODIST, 41
PYTHONNOUSERSITE, 8, 13
CPPFLAGS, 39, 42
PYTHONOPTIMIZE, 7, 12
CXX, 40
PYTHONPATH, 6, 11, 53, 59, 60, 83, 84
EXTRA_CFLAGS, 40
PYTHONPERFSUPPORT, 10, 16
LDFLAGS, 39, 41, 42
PYTHONPLATLIBDIR, 11
LDFLAGS_NODIST, 41
PYTHONPROFILEIMPORTTIME, 9, 14
LDSHARED, 42
PYTHONPYCACHEPREFIX, 10, 12
LIBS, 42
PYTHONSAFEPATH, 7, 11
LINKCC, 41
PYTHONSTARTUP, 7, 11, 12
OPT, 33, 40
PYTHONTRACEMALLOC, 9, 14
PATH, 11, 21, 44, 46, 53, 54, 56
PYTHONUNBUFFERED, 8, 12
PATHEXT, 46
PYTHONUSERBASE, 13
PROFILE_TASK, 30
PYTHONUTF8, 9, 16, 54
PURIFY, 41
PYTHONVERBOSE, 8, 12
PY_BUILTIN_MODULE_CFLAGS, 41
PYTHONWARNDEFAULTENCODING, 10, 16
PY_CFLAGS, 41
PYTHONWARNINGS, 9, 13
PY_CFLAGS_NODIST, 41
136 Índice
Python Setup and Usage, Release 3.13.7
Índice 137