Using
Using
Release 3.13.0
3 Configurar 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.4 Opçõ es para dependê ncias de terceiros . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.3.5 Opçõ es de WebAssembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.6 Opçõ es de instalaçã o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3.7 Opçõ es de desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.3.8 Compilaçã o de depuraçã o do Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.12 Opçõ es de segurança . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5.3 Sinalizadores do vinculador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
ii
6 Utilizando Python no Android 77
6.1 Adicionando Python a uma aplicaçã o Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
8 Editores e IDEs 85
A Glossário 87
Índice 129
iii
iv
Python Setup and Usage, Release 3.13.0
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.0
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.
Detalhes da implementação do CPython: Os esquemas de linha de comando de outras implementaçõ es podem
ser diferentes. Consulte implementations para mais recursos.
python meuscript.py
3
Python Setup and Usage, Release 3.13.0
Uma opçã o de interface termina a lista de opçõ es consumidas pelo interpretador, todos os argumentos consecutivos
terminam em sys.argv – observe que o primeiro elemento, subscrito zero (sys.argv[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 sys.argv será "-c" e o diretó rio atual será adicionado ao
início de sys.path (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 sys.path 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 sys.argv 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 sys.path.
A opçã o -I pode ser usada para executar o script em modo isolado onde sys.path 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 (sys.stdin). Se a entrada padrã o for um terminal, -i está implícito.
Se esta opçã o for fornecida, o primeiro elemento de sys.argv será "-" e o diretó rio atual será adicionado
ao início de sys.path.
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 sys.argv 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 sys.path, 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
sys.path 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 sys.path 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, sys.argv[0] é uma string vazia ("") e o diretó rio
atual será adicionado ao início de sys.path. 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
Quando um script é passado como primeiro argumento ou a opçã o -c é usada, entre no modo interativo
depois de executar o script ou o comando, mesmo quando sys.stdin nã o parece ser um terminal. O arquivo
PYTHONSTARTUP nã o foi 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, sys.path 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 sys.path:
• A linha de comando python -m módulo: Nã o anexa o diretó rio atual.
• A linha de comando python script.py: 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
Habilita a aleatorizaçã o com hash. Esta opçã o só tem efeito se a variá vel de ambiente PYTHONHASHSEED
estiver configurada para 0, uma vez que a aleatorizaçã o com hash é habilitada por padrã o.
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 http://ocert.org/advisories/ocert-2011-003.html para obter detalhes.
PYTHONHASHSEED permite que você defina um valor fixo para o segredo da semente de hash.
µ Ver também
-S
Desabilita a importaçã o do mó dulo site e as manipulaçõ es dependentes do site de sys.path 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 warnings.filterwarnings()
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 tracemalloc.start() 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 sys.breakpointhook() 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 os.environ 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 str.encode().
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 sys.path.
µ 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, sys.argv[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
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
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:
• C.UTF-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 locale.getdefaultlocale() 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 sys.stdin e sys.stdout (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
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 1, o interpretador nã o tentará carregar o REPL baseado em Python que
requer curses e readline, e em vez disso usará o baseado em analisador tradicional REPL.
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.
µ Ver também
https://www.debian.org/doc/manuals/maint-guide/first.en.html
para usuá rios Debian
https://en.opensuse.org/Portal:Packaging
para usuá rios OpenSuse
https://docs.fedoraproject.org/en-US/package-maintainers/Packaging_Tutorial_GNU_Hello/
para usuá rios Fedora
https://slackbook.org/html/package-management-making-packages.html
para usuá rios do Slackware
pkg_add -r python
19
Python Setup and Usage, Release 3.13.0
Por exemplo, usuá rios i386 podem pegar a versã o 2.5.1 do Python usando o comando:
pkg_add ftp://ftp.openbsd.org/pub/OpenBSD/4.2/packages/i386/python-2.5.1p2.tgz
./configure
make
make install
Opções de configuração e advertê ncias para plataformas específicas do Unix estã o amplamente documentadas no
arquivo README.rst 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 openssl.cnf.
$ curl -O https://www.openssl.org/source/openssl-VERSÃO.tar.gz
$ 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 \
--with-openssl-rpath=auto \
--prefix=/usr/local/python-3.x.x
$ make -j8
$ make altinstall
® 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.
Configurar o Python
Alterado na versã o 3.7: Suporte a threads e OpenSSL 1.0.2 agora sã o necessá rios.
Alterado na versã o 3.10: OpenSSL 1.1.1 agora é necessá rio. Requer SQLite 3.7.15.
Alterado na versã o 3.11: Compilador C11, suporte a IEEE 754 e NaN agora sã o necessá rios. No Windows, é
necessá rio o Visual Studio 2017 ou posterior. A versã o 8.5.12 do Tcl/Tk agora é necessá ria para o mó dulo tkinter.
Alterado na versã o 3.13: Autoconf 2.71, aclocal 1.16.5 e SQLite 3.15.2 agora sã o necessá rios.
Veja també m PEP 7 “Guia de estilo para có digo C” e PEP 11 “Suporte do CPython a plataformas”.
23
Python Setup and Usage, Release 3.13.0
make regen-all
make regen-stdlib-module-names
make regen-limited-abi
make regen-configure
O arquivo Makefile.pre.in 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 sys.abiflags.
Veja whatsnew313-free-threaded-cpython para mais detalhes.
Adicionado na versã o 3.13.
PKG_CONFIG
Caminho para o utilitá rio pkg-config.
PKG_CONFIG_LIBDIR
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.
--with-ensurepip=[upgrade|install|no]
Seleciona o comando ensurepip executado na instalaçã o do Python:
• upgrade (padrã o): executa o comando python -m ensurepip --altinstall --upgrade.
• install: executa o comando python -m ensurepip --altinstall;
• no: nã o executa ensurepip;
Adicionado na versã o 3.6.
® 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-bolt
Habilita o uso do otimizador biná rio pó s-vinculaçã o BOLT (desabilitado por padrã o).
BOLT faz parte do projeto LLVM, mas nem sempre está incluído em suas distribuiçõ es biná rias. Este sinali-
zador requer que llvm-bolt e merge-fdata estejam disponíveis.
BOLT ainda é um projeto relativamente novo, entã o este sinalizador deve ser considerado experimental por
enquanto. Como esta ferramenta opera em có digo de má quina, seu sucesso depende de uma combinaçã o do
ambiente de construçã o + os outros argumentos de configuraçã o de otimizaçã o + a arquitetura da CPU, e nem
todas as combinaçõ es sã o suportadas. Versõ es do BOLT anteriores ao LLVM 16 sã o conhecidas por travar
o BOLT em alguns cená rios. O uso do LLVM 16 ou mais recente para otimizaçã o do BOLT é fortemente
incentivado.
As variá veis BOLT_INSTRUMENT_FLAGS e BOLT_APPLY_FLAGS do configure podem ser definidas para
substituir o conjunto padrã o de argumentos para llvm-bolt para instrumentar e aplicar dados BOLT aos
biná rios , respectivamente.
Adicionado na versã o 3.12.
BOLT_APPLY_FLAGS
Argumentos para llvm-bolt ao criar um biná rio otimizado com BOLT.
Adicionado na versã o 3.12.
BOLT_INSTRUMENT_FLAGS
Argumentos para llvm-bolt ao instrumentar biná rios.
Adicionado na versã o 3.12.
--with-computed-gotos
Habilita “gotos” computados no laço de avaliaçã o (habilitado por padrã o em compiladores suportados).
--without-mimalloc
Desativa o alocador rá pido mimalloc (habilitado por padrã o).
Veja també m a variá vel de ambiente PYTHONMALLOC .
--without-pymalloc
Desabilita o alocador de memó ria especializado do Python pymalloc (habilitado por padrã o).
Veja també m a variá vel de ambiente PYTHONMALLOC .
--without-doc-strings
Desabilita as strings de documentaçã o está tica para reduzir o consumo de memó ria (habilitado por padrã o).
As strings de documentaçã o definidas em Python nã o sã o afetadas.
Nã o define a macro WITH_DOC_STRINGS.
Veja a macro PyDoc_STRVAR().
--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).
--with-assertions
Constró i com asserçõ es C habilitadas (o padrã o é nã o): assert(...); e _PyObject_ASSERT(...);.
Se definido, a macro NDEBUG nã o é definida na variá vel do compilador OPT .
Veja també m a opçã o --with-pydebug (construção de depuração) que també m habilita asserçõ es.
Adicionado na versã o 3.6.
--with-valgrind
Habilita suporte ao Valgrind (o padrã o é nã o).
--with-dtrace
Habilita suporte ao DTrace (o padrã o é nã o).
Veja Instrumentando o CPython com DTrace e SystemTap.
Adicionado na versã o 3.6.
--with-address-sanitizer
Habilita o detector de erros de memó ria AddressSanitizer, asan (o padrã o é nã o).
Adicionado na versã o 3.6.
--with-memory-sanitizer
Habilita o detector de erros de alocaçã o do MemorySanitizer, msan (o padrã o é nã o).
Adicionado na versã o 3.6.
--with-undefined-behavior-sanitizer
Habilita o detector de comportamento indefinido UndefinedBehaviorSanitizer, ubsan (o padrã o é nã o).
Adicionado na versã o 3.6.
--with-thread-sanitizer
Habilita o detector de corrida de dados ThreadSanitizer, tsan (o padrã o é nã o).
Adicionado na versã o 3.13.
Deprecated since version 3.13, will be removed in version 3.15: Uma có pia dos fontes da biblioteca
mpdecimal nã o será mais distribuída com Python 3.15.
µ 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.
• sha256;
• sha512;
• sha3 (com shake);
• blake2.
Adicionado na versã o 3.9.
--with-ssl-default-suites=[python|openssl|STRING]
Substitui a string dos conjuntos de criptografia padrã o do OpenSSL:
• python (padrã o): use a seleciona preferida do Python;
• openssl: manté m inalterados os padrõ es do OpenSSL;
• STRING: usa uma string personalizada
Veja o mó dulo ssl.
Adicionado na versã o 3.7.
Alterado na versã o 3.10: As configuraçõ es python e STRING també m definem TLS 1.2 como versã o mínima
do protocolo.
--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 Python.framework 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:
• universal2;
• 32-bit;
• 64-bit;
• 3-way;
• intel;
• intel-32;
• intel-64;
• all.
--with-framework-name=FRAMEWORK
Especifica o nome do framework python no macOS vá lido apenas quando --enable-framework está defi-
nido (padrã o: Python).
--with-app-store-compliance
--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-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=config.site-aarch64 ../configure \
--build=x86_64-pc-linux-gnu \
--host=aarch64-unknown-linux-gnu \
--with-build-python=../x86_64/python
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__:
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-linux-gnu.so'
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:
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.
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 nuget.org 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.0
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 unattend.xml 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 python3.13t.exe, 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 py.exe -3.13t. Observe que o inicializador interpretará py.exe -3
(ou um shebang python3) como “a instalaçã o 3.x mais recente”, que preferirá os biná rios com threads livres aos
normais, enquanto py.exe -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 nuget.org.
Á 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
python3.exe e python3.x.exe bem como python.exe (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 python.exe
ao invé s de uma instalada pela Microsoft Store. Para acessar a nova instalaçã o, use python3.exe ou python3.x.
exe.
O instalador py.exe 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 os.path.realpath():
>>> import os
>>> test_file = 'C:\\Users\\exemplo\\AppData\\Local\\test.txt'
>>> os.path.realpath(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\python.exe -V
Python 3.5.2
# Com -ExcludeVersion
> .\python\tools\python.exe -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 python.props 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 nuget.org sã o www.nuget.org/packages/python para a versã o 64 bits,
www.nuget.org/packages/pythonx86 para a versã o 32 bits e www.nuget.org/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 python3.13t.exe e python.exe, 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 python.exe 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
https://docs.microsoft.com/en-us/windows/win32/procthread/environment-variables
Visã o geral das variá veis de ambiente no Windows
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set_1
O comando set, para modificar temporariamente as variá veis de ambiente
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx
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 hello.py com os seguintes conteú dos:
#! python
import sys
sys.stdout.write("olá do Python %s\n" % (sys.version,))
py hello.py
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\python.exe
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 - py.ini no diretó rio de dados de aplicaçõ es do usuá rio
atual (%LOCALAPPDATA% ou $env:LocalAppData) e py.ini no mesmo diretó rio que o inicializador. Os mesmos
arquivos .ini sã o usados para ambas a versã o ‘console’ do inicializador (isto é , py.exe) e a versã o ‘windows’ (isto é ,
pyw.exe).
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 pyvenv.cfg 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 python.exe, 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 python3.dll ou python37.dll 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 python.exe 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 python.exe diretamente), certifique-se de que o arquivo de referê ncia (Lib\
os.py) 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 pyvenv.cfg.
Alterado na versã o 3.6: Adiciona pythonXX.zip como uma possível referê ncia quando diretamente adjacente ao
executá vel.
Obsoleto desde a versã o 3.6: Mó dulos especificados no registro sob Modules (nã o PythonPath) podem ser impor-
tados por importlib.machinery.WindowsRegistryFinder. 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
• Microsoft Foundation Classes (MFC) user interfaces
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 python.org. Consulte Distribuições
alternativas para conhecer outras opçõ es.
63
Python Setup and Usage, Release 3.13.0
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 python.org, 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 lançamentos futuros.
O pacote de instalaçã o do Python para macOS em python.org pode, opcionalmente, instalar uma compilaçã o
adicional do Python 3.13 que dá suporte à PEP 703, o recurso experimental de threads livres (executado com o trava
global do interpretador desativado). Verifique a pá gina de lançamento em python.org para obter informaçõ es
atualizadas.
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.
Se a caixa ao lado do nome Free-Threaded Python for marcada, um arquivo PythonT.framework també m será
instalado junto ao arquivo Python.framework em /Library/Frameworks. Essa configuraçã o permite que a
compilaçã o de Python 3.13 com threads livres coexista no seu sistema com a compilaçã o de Python 3.13 tradicional
(com GIL) com risco mínimo durante instalaçã o ou testagem. Esse layout de instalaçã o é experimental, e sujeito a
mudanças em lançamentos futuros.
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 Profile.command em
/Applications/Python 3.13/ nã o dã o suporte ao pacote de threads livres.
• A compilaçã 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
compilaçõ 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 inté rpretes em ambos as compilaçõ 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 compilaçã 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 Certificates.command, 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 python.org (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/PythonT.framework/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 python3.xt 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/Python.framework/Versions/3.13/bin/python3.13
,→"
alias py3.13t="/Library/Frameworks/PythonT.framework/Versions/3.13/bin/python3.
,→13t"
RELEASE="python-3.13.0b2-macos11.pkg"
<plist version="1.0">
<array>
<dict>
<key>attributeSetting</key>
<integer>1</integer>
<key>choiceAttribute</key>
<string>selected</string>
<key>choiceIdentifier</key>
<string>org.python.Python.PythonTFramework-3.13</string>
(continua na pró xima pá gina)
Você pode entã o testar que ambas as compilaçõ es de instaladores estã o disponíveis com algo como:
$ # teste que o interpretador com threads livres foi instalado se o pacote Unix␣
,→Command Tools foi habilitado
$ /usr/local/bin/python3.13t -VV
Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, Jun 5␣
,→2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]
$ # e o interpretador tradicional
$ /usr/local/bin/python3.13 -VV
Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-
,→1500.3.9.4)]
$ python3.13t -VV
Python 3.13.0b2 experimental free-threading build (v3.13.0b2:3a83b172af, Jun 5␣
,→2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)]
$ python3.13 -VV
Python 3.13.0b2 (v3.13.0b2:3a83b172af, Jun 5 2024, 12:50:24) [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.
77
Python Setup and Usage, Release 3.13.0
∗ 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.0
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 sys.path. 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 sys.path é 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 foo.bar import _whiz, onde _whiz é implemen-
tado com o mó dulo biná rio sources/foo/bar/_whiz.abi3.so, com sources sendo o local registrado em
sys.path, relativo ao pacote da aplicaçã o. Este mó dulo deve ser distribuído como Frameworks/foo.bar.
_whiz.framework/foo.bar._whiz (criando o nome do framework a partir do caminho de importaçã o com-
pleto do mó dulo), com um arquivo Info.plist no diretó rio .framework identificando o biná rio como um fra-
mework. O mó dulo foo.bar._whiz seria representado no local original com um arquivo marcador sources/
foo/bar/_whiz.abi3.fwork, contendo o caminho Frameworks/foo.bar._whiz/foo.bar._whiz. O fra-
mework també m conteria Frameworks/foo.bar._whiz.framework/foo.bar._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/Python.xcframework/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/Python.xcframework/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 esteja enabled;
• Buffered stdio esteja disabled;
• Escrita de bytecode esteja disabled;
• Manipuladores de sinais estejam enabled;
• 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.
Editores e IDEs
Há um grande nú mero de IDEs que suportam a 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 frente à PEP 8.
Por favor, vá para Python Editors and Integrated Development Environments para obter uma lista completa.
85
Python Setup and Usage, Release 3.13.0
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). CBAs 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
CBAs embutidas para estruturas de dados (no mó dulo collections.abc), nú meros (no mó dulo numbers),
fluxos (no mó dulo io), localizadores e carregadores de importaçã o (no mó dulo importlib.abc). Você pode
criar suas pró prias CBAs 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:
87
Python Setup and Usage, Release 3.13.0
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 visto 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.
88 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.0
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 similar. Exemplos de arquivos biná rios sã o arquivos
abertos no modo biná rio ('rb', 'wb' ou 'rb+'), sys.stdin.buffer, sys.stdout.buffer, e instâ ncias
de io.BytesIO e gzip.GzipFile.
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 byte ou similar
Um objeto com suporte ao o bufferobjects e que pode exportar um buffer C contíguo. Isso inclui todos os
objetos bytes, bytearray e array.array, alé m de muitos objetos memoryview comuns. Objetos byte
ou similar 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 byte ou similar 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 byte ou similar 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).
89
Python Setup and Usage, Release 3.13.0
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, p.ex., 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.
90 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.0
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 python.org.
O termo “CPython” é usado quando necessá rio distinguir esta implementaçã o de outras como Jython ou
IronPython.
contexto atual
O contexto (objeto contextvars.Context) 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 dict.keys(), dict.values() e dict.items() 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, é
91
Python Setup and Usage, Release 3.13.0
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.
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 sys.getfilesystemencoding() e sys.getfilesystemencodeerrors() podem ser usa-
das para obter o tratador de erros e codificaçã o do sistema de arquivos.
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.
92 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.0
localizador
Um objeto que tenta encontrar o carregador para um mó dulo que está sendo importado.
Existem dois tipos de localizador: localizadores de metacaminho para uso com sys.meta_path, e localiza-
dores de entrada de caminho para uso com sys.path_hooks.
Veja finders-and-loaders e importlib para muito mais detalhes.
divisão pelo piso
Divisã o matemá tica que arredonda para baixo para o inteiro mais pró ximo. O operador de divisã o pelo piso é
//. Por exemplo, a expressã o 11 // 4 retorna o valor 2 ao invé s de 2.75, que seria retornado pela divisã o
de ponto flutuante. Note que (-11) // 4 é -3 porque é -2.75 arredondado para baixo. Consulte a PEP
238.
threads livres
Um modelo de threads onde mú ltiplas threads podem simultaneamente executar bytecode Python no mesmo
interpretador. Isso está em contraste com a trava global do interpretador que permite apenas uma thread por
vez executar bytecode Python. Veja PEP 703.
variável livre
Formalmente, conforme definido no modelo de execuçã o de linguagem, uma variá vel livre é qualquer variá vel
usada em um espaço de nomes que nã o seja uma variá vel local naquele espaço de nomes. Veja variável de
clausura para um exemplo. Pragmaticamente, devido ao nome do atributo codeobject.co_freevars, o
termo també m é usado algumas vezes como sinô nimo de variável de clausura.
função
Uma sé rie de instruçõ es que retorna algum valor para um chamador. També m pode ser passado zero ou mais
argumentos que podem ser usados na execuçã o do corpo. Veja també m parâmetro, método e a seçã o function.
anotação de função
Uma anotação de um parâ metro de funçã o ou valor de retorno.
Anotaçõ es de funçã o sã o comumente usados por dicas de tipo: por exemplo, essa funçã o espera receber dois
argumentos int e també m é esperado que devolva um valor int:
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.
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().
93
Python Setup and Usage, Release 3.13.0
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 local (incluindo
variá 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 functools.singledispatch(), 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 multitarefa, à 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 liberado 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.
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
94 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.0
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 sys.path,
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, objetos arquivos,
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
95
Python Setup and Usage, Release 3.13.0
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.
Detalhes da implementação do CPython: 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, locale.strxfrm() é 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(), list.sort(), heapq.merge(),
heapq.nsmallest(), heapq.nlargest() e itertools.groupby().
Há vá rias maneiras de se criar funçõ es chave. Por exemplo, o mé todo str.lower() 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(), operator.itemgetter() e operator.methodcaller() 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.
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).
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.
96 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.0
carregador
Um objeto que carrega um mó dulo. Deve definir um mé todo chamado load_module(). Um carregador é
normalmente devolvido por um localizador. Veja també m:
• finders-and-loaders
• importlib.abc.Loader
• 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).
97
Python Setup and Usage, Release 3.13.0
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 typing.NamedTuple ou com
uma funçã o fá brica collections.namedtuple(). 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 os.open() 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 random.seed() ou itertools.izip(), 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 da PEP 420 que serve apenas como container para sub pacotes. 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.
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.
classe estilo novo
Antigo nome para o tipo de classes agora usado para todos os objetos de classes. Em versõ es anteriores
do Python, apenas classes estilo podiam usar recursos novos e versá teis do Python, tais como __slots__,
descritores, propriedades, __getattribute__(), mé todos de classe, e mé todos está ticos.
objeto
Qualquer dado que tenha estado (atributos ou valores) e comportamento definidos (mé todos). També m a
ú ltima classe base de qualquer classe estilo novo.
escopo otimizado
Um escopo no qual os nomes das variá veis locais de destino sã o conhecidos de forma confiá vel pelo compi-
lador quando o có digo é compilado, permitindo a otimizaçã o do acesso de leitura e gravaçã o a esses nomes.
98 Apêndice A. Glossário
Python Setup and Usage, Release 3.13.0
Os espaços de nomes locais para funçõ es, geradores, corrotinas, compreensõ es e expressõ es geradoras sã o
otimizados desta forma. Nota: a maioria das otimizaçõ es de interpretador sã o aplicadas a todos os escopos,
apenas aquelas que dependem de um conjunto conhecido de nomes de variá veis locais e nã o locais sã o restritas
a escopos otimizados.
pacote
Um módulo Python é capaz de conter submó dulos ou recursivamente, subpacotes. Tecnicamente, um pacote
é um mó dulo Python com um atributo __path__.
Veja també m pacote regular e pacote de espaço de nomes.
parâmetro
Uma entidade nomeada na definiçã o de uma função (ou mé todo) que específica um argumento (ou em alguns
casos, argumentos) que a funçã o pode receber. Existem cinco tipos de parâ metros:
• posicional-ou-nomeado: especifica um argumento que pode ser tanto posicional quanto nomeado. Esse
é o tipo padrã o de parâ metro, por exemplo foo e bar a seguir:
• 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 o termo argumento no glossá rio, a pergunta sobre a diferença entre argumentos e parâ metros, a classe
inspect.Parameter, 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.
localizador de entrada de caminho
Um localizador retornado por um chamá vel em sys.path_hooks (ou seja, um gancho de entrada de caminho)
que sabe como localizar os mó dulos entrada de caminho.
Veja importlib.abc.PathEntryFinder para os mé todos que localizadores de entrada de caminho im-
plementam.
gancho de entrada de caminho
Um chamá vel na lista sys.path_hooks que retorna um localizador de entrada de caminho caso saiba como
localizar mó dulos em uma entrada de caminho específica.
99
Python Setup and Usage, Release 3.13.0
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'
>>> C.D.metodo.__qualname__
'C.D.metodo'
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: email.mime.text:
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.
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
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 collections.abc.Sequence 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.
101
Python Setup and Usage, Release 3.13.0
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[1:3:5]. 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á aprimorada mais.
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.
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.
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.
Veja també m referência emprestada.
codificador de texto
Uma string em Python é uma sequê ncia de pontos de có digo Unicode (no intervalo U+0000–U+10FFFF). Para
armazenar ou transferir uma string, ela precisa ser serializada como uma sequê ncia de bytes.
A serializaçã o de uma string em uma sequê ncia de bytes é conhecida como “codificaçã o” e a recriaçã o da string
a partir de uma sequê ncia de bytes é conhecida como “decodificaçã o”.
Há uma variedade de diferentes serializaçõ es de texto codecs, que sã o coletivamente chamadas de “codificaçõ es
de texto”.
arquivo texto
Um objeto arquivo apto a ler e escrever objetos str. Geralmente, um arquivo texto, na verdade, acessa um
fluxo de dados de bytes e captura o codificador de texto automaticamente. Exemplos de arquivos texto sã o:
arquivos abertos em modo texto ('r' or 'w'), sys.stdin, sys.stdout, e instâ ncias de io.StringIO.
Veja també m arquivo binário para um objeto arquivo apto a ler e escrever objetos byte ou similar.
aspas triplas
Uma string que está definida com trê s ocorrê ncias de aspas duplas (”) ou apó strofos (‘). Enquanto elas nã o
fornecem nenhuma funcionalidade nã o disponível com strings de aspas simples, elas sã o ú teis para inú meras
razõ es. Elas permitem que você inclua aspas simples e duplas nã o escapadas dentro de uma string, e elas
podem utilizar mú ltiplas linhas sem o uso de caractere de continuaçã o, fazendo-as especialmente ú teis quando
escrevemos documentaçã o em docstrings.
tipo
O tipo de um objeto Python determina qual classe de objeto ele é ; cada objeto tem um tipo. Um tipo de objeto
é acessível pelo atributo __class__ ou pode ser recuperado com type(obj).
apelido de tipo
Um sinô nimo para um tipo, criado atravé s da atribuiçã o do tipo para um identificador.
Apelidos de tipo sã o ú teis para simplificar dicas de tipo. Por exemplo:
def remove_tons_de_cinza(
cores: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
pass
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
103
Python Setup and Usage, Release 3.13.0
máquina virtual
Um computador definido inteiramente em software. A má quina virtual de Python executa o bytecode emitido
pelo compilador de bytecode.
Zen do Python
Lista de princípios de projeto e filosofias do Python que sã o ú teis para a compreensã o e uso da linguagem. A
lista é exibida quando se digita “import this” no console interativo.
Esses documentos sã o gerados a partir de reStructuredText pelo Sphinx, um processador de documentos especifica-
mente escrito para documentaçã o Python.
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 escritor 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.
105
Python Setup and Usage, Release 3.13.0
História e Licença
® Nota
107
Python Setup and Usage, Release 3.13.0
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.
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 3.13.0 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 3.13.0 alone or in any derivative version
prepared by Licensee.
5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON 3.13.0
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF
MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 3.13.0, OR ANY DERIVATIVE
THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
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.
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, https://www.wide.ad.jp/.
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
(continua na pró xima pá gina)
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 <[email protected]>
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
</MIT License>
Original location:
https://github.com/majek/csiphash/
/****************************************************************
*
* The author of this software is David M. Gay.
*
* Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose without fee is hereby granted, provided that this entire notice
* is included in all copies of any software which is or includes a copy
* or modification of this software and in all copies of the supporting
* documentation for such software.
*
* THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
* WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
* REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
* OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
*
***************************************************************/
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
https://www.apache.org/licenses/
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
(continua na pró xima pá gina)
"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
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
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:
Copyright (c) 1996-2008 Red Hat, Inc and others.
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:
Copyright (C) 1995-2011 Jean-loup Gailly and Mark Adler
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:
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:
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
127
Python Setup and Usage, Release 3.13.0
Não alfabético C
..., 87 -c
-? opção de linha de comando, 4
opção de linha de comando, 5 caminho de importação, 95
%APPDATA%, 49 carregador, 97
>>>, 87 CC
__future__, 93 opção de linha de comando, 27
__slots__, 101 CFLAGS, 30, 3941
opção de linha de comando, 27
A CFLAGS_NODIST, 3941
aguardável, 88 chamável, 89
ambiente virtual, 103 --check-hash-based-pycs
anotação, 87 opção de linha de comando, 6
anotação de função, 93 classe, 89
anotação de variável, 103 classe base abstrata, 87
apelido de tipo, 103 classe estilo novo, 98
API provisória, 100 codificação da localidade, 97
argumento, 87 codificador de texto, 102
argumento nomeado, 96 coleta de lixo, 93
argumento posicional, 100 compreensão de conjunto, 102
arquivo binário, 89 compreensão de dicionário, 91
arquivo texto, 102 compreensão de lista, 96
aspas triplas, 102 CONFIG_SITE
atributo, 88 opção de linha de comando, 36
contagem de referências, 101
B contexto, 90
-B contexto atual, 91
opção de linha de comando, 6 contíguo, 90
-b contíguo C, 90
opção de linha de comando, 6 contíguo Fortran, 90
BDFL, 89 corrotina, 90
BOLT_APPLY_FLAGS CPP
opção de linha de comando, 31 opção de linha de comando, 27
BOLT_INSTRUMENT_FLAGS CPPFLAGS, 39, 41
opção de linha de comando, 31 opção de linha de comando, 27
--build CPython, 91
opção de linha de comando, 36 CURSES_CFLAGS
bytecode, 89 opção de linha de comando, 27
BZIP2_CFLAGS CURSES_LIBS
opção de linha de comando, 27 opção de linha de comando, 27
BZIP2_LIBS
opção de linha de comando, 27 D
-d
129
Python Setup and Usage, Release 3.13.0
F J
f-string, 92 -J
fatia, 102 opção de linha de comando, 11
função, 93
130 Índice
Python Setup and Usage, Release 3.13.0
L mágico, 97
lambda, 96 método especial, 102
LBYL, 96 método mágico, 97
LDFLAGS, 39, 41 módulo, 97
opção de linha de comando, 27 módulo de extensão, 92
LDFLAGS_NODIST, 41 MRO, 98
LIBB2_CFLAGS mutável, 98
opção de linha de comando, 28
LIBB2_LIBS
N
opção de linha de comando, 28 nome qualificado, 101
LIBEDIT_CFLAGS novas linhas universais, 103
opção de linha de comando, 28 número complexo, 90
LIBEDIT_LIBS
opção de linha de comando, 28 O
LIBFFI_CFLAGS -O
opção de linha de comando, 28 opção de linha de comando, 7
LIBFFI_LIBS objeto, 98
opção de linha de comando, 28 objeto arquivo, 92
LIBLZMA_CFLAGS objeto arquivo ou similar, 92
opção de linha de comando, 28 objeto byte ou similar, 89
LIBLZMA_LIBS objeto caminho ou similar, 100
opção de linha de comando, 28 -OO
LIBMPDEC_CFLAGS opção de linha de comando, 7
opção de linha de comando, 28 opção de linha de comando
LIBMPDEC_LIBS -?, 5
opção de linha de comando, 28 -B, 6
LIBREADLINE_CFLAGS -b, 6
opção de linha de comando, 28 BOLT_APPLY_FLAGS, 31
LIBREADLINE_LIBS BOLT_INSTRUMENT_FLAGS, 31
opção de linha de comando, 28 --build, 36
LIBS BZIP2_CFLAGS, 27
opção de linha de comando, 27 BZIP2_LIBS, 27
LIBSQLITE3_CFLAGS -c, 4
opção de linha de comando, 28 CC, 27
LIBSQLITE3_LIBS CFLAGS, 27
opção de linha de comando, 28 --check-hash-based-pycs, 6
LIBUUID_CFLAGS CONFIG_SITE, 36
opção de linha de comando, 28 CPP, 27
LIBUUID_LIBS CPPFLAGS, 27
opção de linha de comando, 28 CURSES_CFLAGS, 27
lista, 96 CURSES_LIBS, 27
localizador, 93 -d, 6
localizador baseado no caminho, 100 --disable-gil, 27
localizador de entrada de caminho, 99 --disable-ipv6, 24
localizador de metacaminho, 97 --disable-test-modules, 29
-E, 6
M --enable-big-digits, 24
-m --enable-bolt, 30
opção de linha de comando, 4 --enable-framework, 35, 36
MACHDEP --enable-loadable-sqlite-extensions,
opção de linha de comando, 27 24
mágico --enable-optimizations, 30
método, 97 --enable-profiling, 31
mapeamento, 97 --enable-pystats, 25
máquina virtual, 104 --enable-shared, 33
metaclasse, 97 --enable-universalsdk, 35
método, 97 --enable-wasm-dynamic-linking, 29
especial, 102 --enable-wasm-pthreads, 29
Índice 131
Python Setup and Usage, Release 3.13.0
--exec-prefix, 29 --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, 29
--help-all, 5 --with-framework-name, 35, 36
--help-env, 5 --with-hash-algorithm, 34
--help-xoptions, 5 --with-libc, 34
--host, 36 --with-libm, 34
HOSTRUNNER, 36 --with-libs, 33
-I, 6 --with-lto, 30
-i, 6 --with-memory-sanitizer, 33
-J, 11 --with-openssl, 34
LDFLAGS, 27 --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, 28 --with-pydebug, 32
LIBREADLINE_LIBS, 28 --with-readline, 34
LIBS, 27 --with-ssl-default-suites, 35
LIBSQLITE3_CFLAGS, 28 --with-strict-overflow, 31
LIBSQLITE3_LIBS, 28 --with-suffix, 24
LIBUUID_CFLAGS, 28 --with-system-expat, 33
LIBUUID_LIBS, 28 --with-system-libmpdec, 33
-m, 4 --with-thread-sanitizer, 33
MACHDEP, 27 --with-trace-refs, 32
-O, 7 --with-tzpath, 24
-OO, 7 --with-undefined-behavior-sanitizer,
-P, 7 33
PANEL_CFLAGS, 28 --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, 29 ZLIB_CFLAGS, 29
-q, 7 ZLIB_LIBS, 29
-R, 7 OPT, 33
-S, 8 ordem de resolução de métodos, 97
-s, 7
TCLTK_CFLAGS, 29 P
TCLTK_LIBS, 29 -P
-u, 8 opção de linha de comando, 7
-V, 6 pacote, 99
-v, 8 pacote de espaço de nomes, 98
--version, 6 pacote provisório, 100
-W, 8 pacote regular, 101
--with-address-sanitizer, 33 PANEL_CFLAGS
--with-app-store-compliance, 35 opção de linha de comando, 28
--with-assertions, 32 PANEL_LIBS
--with-build-python, 36 opção de linha de comando, 29
--with-builtin-hashlib-hashes, 34 parâmetro, 99
132 Índice
Python Setup and Usage, Release 3.13.0
Índice 133
Python Setup and Usage, Release 3.13.0
134 Índice
Python Setup and Usage, Release 3.13.0
Índice 135