Pergunta

Como criar um bom motor plugin para executáveis ??autônomos criados com pyInstaller, py2exe ou ferramentas similares?

Eu não tenho experiência com py2exe, mas pyInstaller usa um gancho de importação de pacotes de importação de que é comprimido repositório. Claro que eu sou capaz de importar dinamicamente outro repositório comprimido criado com pyInstaller e executar o código - este pode ser um motor simples plugin

.

Problemas aparece quando o plugin (isso que é importado de forma dinâmica) usa uma biblioteca que não está presente no repositório original (nunca importado). Isso ocorre porque gancho de importação é para o aplicativo original e procura por pacotes no repositório original - não o importado mais tarde (plugin repositório de pacotes).

Existe uma maneira fácil de resolver este problema? Talvez existam tais motor?

Foi útil?

Solução

Ao compilar a exe, o seu vai ter esta questão.

A única opção que eu posso pensar para permitir o acesso aos usuários com vários daqueles plugins para usar qualquer biblioteca python é incluir todas as bibliotecas no pacote exe.

É provavelmente uma boa idéia para limitar suportado bibliotecas para um subconjunto, e lista-lo em sua documentação. Até você.

Eu tenho py2exe única usado.

Em py2exe você pode especificar bibliotecas que não foram encontrados na pesquisa na setup.py arquivo.

Aqui está um exemplo:

from distutils.core import setup
import py2exe

setup (name = "script2compile",
       console=['script2compile.pyw'],
       version = "1.4",
       author = "me",
       author_email="somemail@me.com",
       url="myurl.com",
       windows = [{
                    "script":"script2compile.pyw",
                    "icon_resources":[(1,"./ICONS/app.ico")]  # Icon file to use for display
                 }],
       # put packages/libraries to include in the "packages" list
       options = {"py2exe":{"packages": [   "pickle",
                                            "csv",
                                            "Tkconstants",
                                            "Tkinter",
                                            "tkFileDialog",
                                            "pyexpat",
                                            "xml.dom.minidom",
                                            "win32pdh",
                                            "win32pdhutil",
                                            "win32api",
                                            "win32con",
                                            "subprocess", 
                                        ]}} 

       )

import win32pdh
import win32pdhutil
import win32api

Outras dicas

PyInstaller faz Tenha um plug-in sistema para lidar com importações ocultos, e navios com vários deles já. Consulte a página ( http://www.pyinstaller.org ) que diz:

O principal objetivo do PyInstaller é para ser compatível com pacotes de 3-parte out-of-the-box. Isto significa que, com PyInstaller, todos os truques necessários para fazer pacotes externos funcionam já estão integrados dentro de si PyInstaller de modo que não há nenhuma intervenção do usuário necessária. Você nunca vai ser obrigado a procurar truques em wikis e aplicar modificação personalizada para seus arquivos ou seus scripts de configuração. Confira nossa lista de compatibilidade de SupportedPackages.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top