Como compilar um arquivo python?

57

Comecei a aprender python e também sou um novo usuário do Ubuntu. Eu preciso conhecer as maneiras de compilar os .pyarquivos. Eu tentei com o comando

python "hello.py"

Quais são as outras maneiras de compilar python?

Bharath Lakshman
fonte

Respostas:

58

Adicionando à resposta de Bryan, se você simplesmente deseja compilar um arquivo ou vários arquivos de um terminal, o py_compilemódulo pode ser executado como um script da seguinte maneira:

python -m py_compile fileA.py fileB.py fileC.py ...

Yamaho
fonte
9
Se você está compilando porque deseja velocidade, também pode adicionar a -Obandeira, como python -O -m py_compile …, que ativará as otimizações básicas. Ele remove principalmente as assertinstruções e o if __debug__código; portanto, para a maioria dos códigos, não tem efeito. Consulte man pythone "O que a otimização Python ... faz?" Para obter detalhes.
Rory O'Kane
26

Lembre-se também de que você não precisa compilar um .pyarquivo para executá-lo. Python é uma linguagem interpretada e você pode executar os scripts diretamente, usando:

python hello.py

Ou torne seu script executável adicionando #!/usr/bin/env pythonà parte superior do script, tornando o arquivo executável chmod +x hello.pye executando:

./hello.py

O fato de o Python compilar internamente seu .pyscript para .pycarquivos de bytecode por motivos de desempenho é um detalhe da implementação e, a menos que você tenha um motivo forte para fazê-lo, deixe o próprio python decidir quando e se compilar.

MestreLion
fonte
Estou confuso sobre o porquê disso funciona. O intérprete Python não precisa ler o script para executá-lo? Se você der apenas permissão de execução ( chmod +x), como o intérprete está lendo o script?
precisa saber é o seguinte
@ yellow01: quando você executa um script que contém um "shebang", ou seja, a primeira linha começa com #!/path/to/interpreter, o kernel realmente executa o que for declarado lá, passando o caminho do script como argumento. No meu exemplo, quando você executa, o ./hello.pyque é realmente executado é /usr/bin/env python ./hello.py. Veja en.wikipedia.org/wiki/Shebang_(Unix)
MestreLion
@ yellow01 você está certo de que o intérprete precisará de permissões de leitura assim que iniciado pelo processo que MestreLion descreve. No entanto, as chmod +xconcessões são executadas e não tocam nas permissões existentes, portanto, presumivelmente, é legível, além de agora ser executável.
spectras 11/06
11

Confira este link Compilar em Python

No meio da página, ele fala sobre o módulo py_compile que pode ser importado. A sintaxe é a seguinte:

import py_compile

py_compile.compile("file.py")

Esse método de compilação não executará o módulo, como na execução de python file.py.

Também existe um método que compila uma árvore de diretórios inteira, mas deixarei você verificar o link para ver como isso é executado.

Espero que isto ajude.

Bryan
fonte
4

Você pode compilar scripts Python para um código binário usando vários métodos, mas descobri que usar o Nuitka é mais eficiente.

Nuitka é um compilador Python para C ++ que suporta quase todas as versões do python.

A sintaxe do comando é tão fácil quanto

nuitka hello.py

Goto http://nuitka.net/doc/user-manual.html para mais informações.

salafi
fonte
6
Mais eficiente como? Por que alguém iria querer usá-lo?
muru 31/01
O nuitka é realmente muito útil - por exemplo, permite enviar programas Python para computadores nos quais o Python não está instalado. Mas, como a nuitka compila programas Python para código de máquina C ++, você pode contornar isso.
user258532