2010-02-23 16 views
6

Ich muss eine große Anzahl von Windows XP-Rechnern die gleiche Version von Python, mit einer Auswahl von Modulen, von denen eine Python-Win32 ist. Ich habe über die Installation von Python auf einem Netzwerklaufwerk nachgedacht, das von allen Clientcomputern bereitgestellt wird, und den Pfad auf den Clients einfach anpassen. Python beginnt fein aus dem Netz, aber wenn win32com Import erhalte ich einen Pop-up-Fehler sagen:Installieren von Python mit Python Win32-Erweiterungen auf einem Netzlaufwerk

The procedure entry point [email protected]@[email protected]@[email protected] could not be located in the dynamic link library pywintypes24.dll

nach der Nachricht Dialog Entlassung ich in der Konsole:

ImportError: DLL load failed: The specified procedure could not be found.

ich den Python gesucht Verzeichnis für die pywintypes24.dll und es ist in "Lib \ site-packages \ pywin32_system32" vorhanden.

Was fehlt mir und gibt es eine andere Möglichkeit, Python + Python-Win32 + Zusatzmodul einmal zu installieren und sie auf vielen Computern ausgeführt werden? Ich habe keinen Zugriff auf die Microsoft-Systemverwaltungstools, daher muss ich etwas weniger technologisch sein.

Antwort

7

Auf jeder Maschine muss man grundsätzlich pywin32_postinstall.py -install einmal laufen lassen. Angenommen, Ihre Python-Installation im Netzwerk ist N:\Python26, führen Sie folgenden Befehl auf jedem Client:

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

Eine weitere wichtige Sache Good Luck! ist. Der Grund ist, dass Sie dies möglicherweise als admin tun müssen. In meinem Fall funktionierte dieses Setup für alle außer einem Computer. Ich habe immer noch nicht herausgefunden warum.

0

"" "Ich suchte das Python-Verzeichnis für die pywintypes24.dll und es ist in" Lib \ site-packages \ pywin32_system32 "" "" vorhanden. Die Existenz der DLL steht nicht in Frage. Ist das Einstiegspunkt in dieser DLL?

Haben Sie versucht, genau die gleiche Konfiguration auf einem Nicht-Netzwerklaufwerk zu installieren?

Haben Sie versucht, andere Module in das Paket zu importieren?

Haben Sie die DLLs mit dem Abhängigkeitsassistenten oder ähnlichem überprüft?

Bedeutet die "24" in pywintypes24.dll Python 2.4? Welche Python-Version verwendest du?

+0

Ja, die DLL den zitierten Einstiegspunkt enthält, und es hat die gleiche MD5-Summe als DLL auf meinem lokale C: Installation, die kein Problem beim Laden des win32com Moduls hat. – florin

0

Sie batch files running at boot zu

  • Montieren Sie die Netzwerkfreigabe (net use \\server\share)
  • Kopieren Sie den Python und Pakete Installateure von der Netzwerkfreigabe in einem lokalen Ordner
  • prüft Version des MSI-Installationsprogrammes gegen die verwenden könnten installierte Version
  • Wenn unterschiedlich, deinstallieren Sie Python und alle versionsabhängigen Pakete
  • Installieren Sie alle Pakete neu

Dies wäre so ziemlich ein eigenes zentrales Verwaltungssystem für diese Software.

1

Python (oder genauer gesagt, das Betriebssystem) durchsucht die DLLs mit os.environ ["PATH"] und nicht mit sys.path.

Sie könnten Python also mit einer einfachen .cmd-Datei starten, die \ server \ share \ python26 zum Pfad hinzufügt (vorausgesetzt, das Installationsprogramm (oder Sie) hat die DLLs von \ server \ share \ python26 \ lib \ site- kopiert Pakete \ pywin32-system32 nach \ server \ share \ python26).

Oder können Sie den folgenden Code in Ihre Skripte hinzufügen, bevor sie versuchen, win32api etc zu importieren:

# 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 
Verwandte Themen