Question

comment créer un bon moteur de plug-in pour les exécutables autonomes créés avec pyInstaller, py2exe ou des outils similaires?

Je n'ai pas d'expérience avec py2exe, mais pyInstaller utilise un point d'ancrage pour importer des packages à partir de son référentiel compressé. Bien sûr, je peux importer dynamiquement un autre référentiel compressé créé avec pyInstaller et exécuter le code - il s’agit peut-être d’un simple moteur de plug-in.

Des problèmes apparaissent lorsque le plug-in (ce qui est importé de manière dynamique) utilise une bibliothèque qui n'est pas présente dans le référentiel d'origine (jamais importé). En effet, le raccordement d'importation concerne l'application d'origine et recherche les packages dans le référentiel d'origine, et non celui importé ultérieurement (référentiel de packages de plug-in).

Existe-t-il un moyen simple de résoudre ce problème? Peut-être existe-t-il un tel moteur?

Était-ce utile?

La solution

Lorsque vous compilez pour exe, vous allez avoir ce problème.

La seule option à laquelle je puisse penser pour permettre aux utilisateurs d’accéder à n’importe quelle bibliothèque python avec leurs plugins est d’inclure toutes les bibliothèques du paquet exe.

C'est probablement une bonne idée de limiter les bibliothèques prises en charge à un sous-ensemble et de les répertorier dans votre documentation. À vous.

Je n'ai utilisé que py2exe.

Dans py2exe, vous pouvez spécifier les bibliothèques introuvables dans la recherche dans le fichier setup.py .

Voici un exemple:

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

Autres conseils

PyInstaller a un système de plug-in pour la gestion des importations masquées, et est livré avec plusieurs de ceux déjà insérés. Voir la page Web ( http://www.pyinstaller.org ) qui dit:

  

L’objectif principal de PyInstaller est d’être compatible avec les packages tiers prêts à l’emploi. Cela signifie qu'avec PyInstaller, toutes les astuces nécessaires pour faire fonctionner les packages externes sont déjà intégrées dans PyInstaller lui-même, de sorte qu'aucune intervention de l'utilisateur n'est requise. Vous ne serez jamais obligé de rechercher des astuces dans les wikis et d'appliquer des modifications personnalisées à vos fichiers ou à vos scripts d'installation. Consultez notre liste de compatibilité de SupportedPackages.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top