Question

Je dois garder un grand nombre de machines fonctionnant sous Windows XP la même version de python, avec un assortiment de modules, dont un est python-win32. Je pensais à l'installation de python sur un lecteur réseau monté par toutes les machines clientes, et il suffit de régler le chemin sur les clients. Python démarre bien à partir du réseau, mais lors de l'importation win32com je reçois une erreur de pop-up disant:

  

Le point d'entrée de procédure? PyWinObject_AsHANDLE @@ YAHPAU_object @@ PAPAXH @ Z ne pouvait pas se trouver dans la bibliothèque de liens dynamiques pywintypes24.dll

après avoir rejeté la boîte de dialogue de message que je reçois dans la console:

  

ImportError: charge de DLL a échoué: n'a pu être trouvée La procédure spécifiée

.

Je cherchai le répertoire python pour le pywintypes24.dll et il est présent dans "Lib \ site-packages \ pywin32_system32".

Qu'est-ce que je manque et est-il une autre façon que je peux installer Python + Python-Win32 + module supplémentaire une fois les avoir en cours d'exécution sur plusieurs machines? Je n'ai pas accès aux outils de gestion des systèmes Microsoft, donc je dois être un peu plus faible technologie que cela.

Était-ce utile?

La solution

Sur chaque machine, vous devez exécuter essentiellement pywin32_postinstall.py -install suivant une fois. En supposant que votre installation de python sur le réseau est N:\Python26, exécutez la commande suivante sur chaque client:

N:\Python26\python.exe N:\Python26\Scripts\pywin32_postinstall.py -install

Une autre chose importante est Good Luck!. La raison est que vous pourriez avoir besoin de faire cela comme admin. Dans mon cas, cette configuration a travaillé pour tous sauf un ordinateur. Je ne ai toujours pas à comprendre pourquoi.

Autres conseils

Python (ou précisément, le système d'exploitation) recherche les DLL en utilisant os.environ [ "PATH"] et non par la recherche sys.path.

Vous pouvez commencer Python à l'aide d'un simple fichier .cmd à la place qui ajoute \ server \ share \ Python26 au chemin (étant donné le programme d'installation (ou vous) copié les DLL de \ server \ share \ Python26 \ lib \ site-packages \ pywin32-\ System32 server \ share \ Python26).

Ou, vous pouvez ajouter le code suivant à vos scripts avant d'essayer d'importer win32api etc:

    # 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

"" "Je cherchai le répertoire python pour le pywintypes24.dll et il est présent dans "Lib \ site-packages \ pywin32_system32" """. L'existence de la dll est pas en cause. Est-ce point d'entrée dans ce 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 le paquet?

Avez-vous vérifié les dll avec la dépendance marchette ou quelque chose de similaire?

Est-ce que le "24" dans pywintypes24.dll signifie Python 2.4? Quelle version de Python vous utilisez?

Vous pouvez utiliser fichiers batch en cours d'exécution au démarrage

  • Monter le partage réseau (net use \\server\share)
  • Copiez les programmes d'installation Python et les paquets de la part du réseau dans un dossier local
  • Vérifiez la version du programme d'installation msi contre la version installée
  • Si différent, désinstaller Python et tous les paquets dépendants version
  • Réinstaller tous les paquets

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

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