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.