Aplicativo criado com Python que não é do sistema, usando py2app em pyenv, não pode ser executado em outras máquinas
Meu entendimento era que, desde que um Python não padrão da Apple seja empregado para compilar, o usuário final não precisará instalar o próprio Python para executar um aplicativo construído em py2app. Ao desenvolver e testar o aplicativo em meu próprio ambiente, obviamente tenho o Python instalado. Especificamente, eu construí umpyenv com uma instalação python.org, não da própria Apple. No entanto, quando dou o aplicativo a um usuário final que não possui o Python instalado, ele recebe:
Um tempo de execução do Python não pôde ser localizado. Pode ser necessário instalar uma compilação da estrutura do Python ou editar a matriz PyRuntimeLocations no arquivo Info.plist deste aplicativo.
A segunda linha é preocupante; se o que afirma for verdadeiro, será necessário criar uma instância de aplicativo separada para cada local possível da instalação de um usuário final, por exemplo/usr/bin
, /Library/Frameworks
etc.
ATUALIZAR: Info.plist define:
<key>PythonExecutable</key>
<string>/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python</string
No entanto, o usuário final em questão possui apenas uma instalação do sistema no/usr/bin
.
Isso significa que todo usuário final precisa ter um Python instalado externamente e deve viver em/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python
E se eles não tiverem um Python que não seja da Apple? E se eles tiverem um Python não Apple, mas não o 2.6? Como pode ser evitada essa dependência um pouco codificada?