6
votes

Installation de Python avec des extensions Python Win32 sur un lecteur réseau

Je dois conserver un grand nombre de machines Windows XP exécutant la même version de Python, avec un assortiment de modules, dont l'un est Python-Win32. J'ai pensé à installer Python sur un lecteur réseau monté par toutes les machines clientes et ajustez simplement le chemin sur les clients. Python commence bien du réseau, mais lors de l'importation de Win32Com, je reçois une erreur contextuelle disant:

Le point d'entrée de la procédure? pywinobject_ashaandle @@ yahpau_object @@ Papaxh @ z n'a pas pu être localisé dans la bibliothèque de liaison dynamique PYWINTYPES24.DLL

Après avoir rejeté la boîte de dialogue Message, je comprends dans la console:

Importerror: La charge DLL a échoué: la procédure spécifiée n'a pas pu être trouvée.

J'ai cherché le répertoire Python pour le pywintypes24.dll et il est présent dans "LIB \ Sites-Packages \ pywin32_system32".

Qu'est-ce que je manque et y a-t-il une autre solution dans laquelle je peux installer Python + Python-Win32 + un module supplémentaire une fois et les faire courir sur de nombreuses machines? Je n'ai pas accès aux outils de gestion des systèmes Microsoft pour que je dois donc être un peu plus basse que cela.


2 commentaires

"" "J'ai cherché le répertoire Python pour le pywinypeys24.dll et il est présent dans" Lib \ Sites-Packages \ pywin32_system32 "" "". L'existence de la DLL n'est pas en cause. Est-ce que ce point d'entrée dans cette DLL? Avez-vous essayé d'installer exactement la même configuration sur un lecteur non réseau? Avez-vous essayé d'importer d'autres modules dans l'emballage? Avez-vous vérifié les DLL avec le walker de dépendance ou quelque chose de similaire? Est-ce que le "24" dans pywintypes24.dll signifie Python 2.4? Quelle version de Python utilisez-vous?


Oui, la DLL contient le point d'entrée citée, et il a le même MD5Sum que la DLL sur mon article C: Installation locale qui n'a aucun problème chargement du module Win32COM.


3 Réponses :


0
votes

Vous pouvez utiliser Fichiers de lots en cours d'exécution au démarrage à

  • Montez le partage réseau ( Utilisation nette \\ Server \ Partager )
  • Copiez les installateurs Python et Packages de la part du réseau dans un dossier local
  • Vérification de la version du programme d'installation MSI contre la version installée
  • Si différent, désinstallez Python et toutes les valeurs dépendantes de la version
  • Réinstallez tous les forfaits

    Ceci serait à peu près un rouleau de votre propre système de gestion central pour ce logiciel.


0 commentaires

9
votes

sur chaque machine, vous devez essentiellement exécuter après pywin32_postinstall.py -install une fois. En supposant que votre installation Python sur le réseau est n: \ python26 , exécutez la commande suivante sur chaque client: xxx

une autre chose importante est bonne chance! . La raison est que vous devrez peut-être faire cela comme admin . Dans mon cas, une telle configuration a fonctionné pour tous un ordinateur sauf un. Je n'ai toujours pas compris pourquoi.


0 commentaires

1
votes

python (ou précisément, le système d'exploitation) recherche les DLL à l'aide d'OS.Environ ["chemin"] et non en recherchant Sys.Path.

Pour que vous puissiez démarrer Python à l'aide d'un simple fichier .cmd. \ Share \ Python26 sur le chemin du chemin (étant donné que le programme d'installation (ou vous) copié les DLL à partir de \ Server \ Share \ python26 \ lib \ Site-Site-Sites-Packages \ pywin32-system32 sur \ Server \ Share \ Python26). P>

Ou, vous pouvez ajouter le code suivant à vos scripts avant d'essayer d'importer Win32API etc.: P>

    # Add Python installation directory to the path, 
    # because on Windows 7 the pywin32 installer fails to copy
    # the required DLLs to the %WINDIR%\System32 directory and
    # copies them to the Python installation directory instead.
    # Fortunately, in Python it is possible to modify the PATH
    # before loading the DLLs.
    os.environ["PATH"] = sys.prefix + ";" + os.environ.get("PATH")
    import win32gui
    import win32con


0 commentaires