Por que py e não pyc ou pyo?

7

Quando eu instalo um pacote deb do python, digamos python-numpy os arquivos são arquivos python simples. Como eu digo ao gerenciador de pacotes - que eu realmente prefiro usar pyc ou até melhor - arquivos pyo?

    
por Adobe 16.01.2013 / 11:58

1 resposta

11

Você já as tem e já as usa

Aplicativos Python bem empacotados estão sendo compilados em .pyc arquivos em uma execução de script após a instalação dos arquivos. Isso é necessário de acordo com as diretrizes de empacotamento para poder adotar a instalação do Python que você está usando naquele momento. Lembre-se que .pyc arquivos são muito específicos para o seu sistema (versão e dependências do Python).

Todos os arquivos .pyo e .pyc são, portanto, especificamente excluídos em pacotes e marcados como erros por Lintian :

  

Os arquivos de origem python compilados não devem ser incluídos no pacote. Esses arquivos devem ser removidos do pacote e criados no momento da instalação do pacote no postinst.

     

Consulte Política Debian sobre Python seção 2.6 (Modules Byte-Compilation ) para detalhes.

     

Gravidade: grave, certeza: certo

No caso de python-numpy , esta compilação de byte pós-instalação é tratada pelo gancho debhelper do pycentral. Após a instalação, é assim:

ls -l /usr/lib/python2.7/dist-packages/numpy
lrwxrwxrwx  1 root root     47 Mar 20  2012 add_newdocs.py -> ../../../../share/pyshared/numpy/add_newdocs.py
-rw-r--r--  1 root root 251912 Aug  6 22:06 add_newdocs.pyc

Mais algumas informações básicas

O motivo pelo qual esses arquivos .pyc / .pyo não são compilados no tempo de execução durante a primeira inicialização do aplicativo, como esperado é o seguinte.

Os arquivos Python são instalados em um diretório do sistema, disponível para todos os usuários do sistema. Sempre que um usuário inicia o aplicativo, o interpretador Python pode ler os arquivos .py , mas não pode gravar nos diretórios (por exemplo, /usr/lib/python2.7/dist-packages/ ). Isso faz parte da segurança geral em todos os sistemas Linux; os usuários não devem gravar em /usr , apenas com direitos de root isso deve ser possível. Por esse motivo, os ganchos do APT compilarão os arquivos Python para você no momento da instalação; em primeiro lugar para minimizar o tamanho do pacote, em segundo lugar para poder reativar os ganchos uma vez que algo muda no seu sistema em relação ao Python, porque é necessário recompilar quando eles são incompatíveis durante as atualizações, por exemplo.

Isso, no entanto, não afetará os arquivos python usuais do usuário que estão sendo compilados em tempo de execução.

    
por gertvdijk 16.01.2013 / 12:14