Domanda

Devo mantenere un gran numero di macchine Windows XP che eseguono la stessa versione di Python, con un assortimento di moduli, uno dei quali è python-win32.Ho pensato di installare Python su un'unità di rete montata da tutte le macchine client e di regolare semplicemente il percorso sui client.Python si avvia correttamente dalla rete, ma durante l'importazione di win32com ricevo un errore pop-up che dice:

Impossibile individuare il punto di ingresso della procedura ?PyWinObject_AsHANDLE@@YAHPAU_object@@PAPAXH@Z nella libreria di collegamento dinamico pywintypes24.dll

dopo aver chiuso la finestra di dialogo del messaggio, ottengo nella console:

Errore di importazione:Caricamento DLL non riuscito:Impossibile trovare la procedura specificata.

Ho cercato pywintypes24.dll nella directory Python ed è presente in "Lib\site-packages\pywin32_system32".

Cosa mi manca ed esiste un altro modo in cui posso installare Python + Python-Win32 + modulo aggiuntivo una volta e farli funzionare su molte macchine?Non ho accesso agli strumenti di gestione dei sistemi Microsoft, quindi devo essere un po' più low-tech di così.

È stato utile?

Soluzione

Su ogni macchina si deve eseguire fondamentalmente seguente pywin32_postinstall.py -install una volta. Supponendo che l'installazione di pitone sulla rete è N:\Python26, eseguire seguente comando su ogni client:

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

Un'altra cosa importante è Good Luck!. La ragione è che potrebbe essere necessario fare questo come admin. Nel mio caso ad esempio di installazione ha lavorato per tutti, ma un computer. Non ho ancora a capire perché.

Altri suggerimenti

Python (o appunto, il sistema operativo) Ricerche le DLL utilizzando os.environ [ "PATH"] e non con la ricerca sys.path.

Così si potrebbe iniziare a Python utilizzando un semplice file .cmd invece che aggiunge \ server \ share \ Python26 al percorso (data di installazione (o voi) copiato le DLL da \ server \ share \ Python26 \ lib \ site-packages \ system32 pywin32-a \ server \ share \ Python26).

In alternativa, è possibile aggiungere il seguente codice ai tuoi script prima di tentare di importare 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

"" "Ho cercato la directory pitone per la pywintypes24.dll ed è presente in "Lib \ site-packages \ pywin32_system32" """. L'esistenza del dll non è in discussione. E 'questo il punto di ingresso in quella dll?

Hai provato l'installazione esattamente la stessa configurazione in un'unità non di rete?

Hai provato a importare altri moduli nel pacchetto?

Avete controllato le DLL con il Dependency Walker o qualcosa di simile?

Non ritiene la "24" in pywintypes24.dll significa Python 2.4? Quale versione di Python utilizzi?

Potresti usare file batch in esecuzione all'avvio A

  • Montare la condivisione di rete (net use \\server\share)
  • Copia i programmi di installazione di Python e dei pacchetti dalla condivisione di rete in una cartella locale
  • Controllare la versione del programma di installazione MSI rispetto alla versione installata
  • Se diverso, disinstalla Python e tutti i pacchetti dipendenti dalla versione
  • Reinstallare tutti i pacchetti

Sarebbe praticamente un lancio del tuo sistema di gestione centrale per quel software.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top