Pregunta

Tengo que mantener un gran número de máquinas con Windows XP corriendo la misma versión del pitón, con un surtido de módulos, uno de los cuales es python-Win32. Pensé en la instalación de pitón en una unidad de red que se monta por todas las máquinas cliente, y simplemente ajustar la trayectoria de los clientes. Python se inicia bien desde la red, pero al importar win32com me sale un error emergente diciendo:

  

El punto de entrada del procedimiento? PyWinObject_AsHANDLE @@ @@ YAHPAU_object PAPAXH @ Z no pudo ser localizado en la biblioteca de vínculos dinámicos pywintypes24.dll

después de despedir el diálogo de mensaje que recibo en la consola:

  

ImportError: carga DLL falló: El procedimiento especificado no se pudo encontrar

.

Me buscó el directorio pitón para la pywintypes24.dll y está presente en "Lib \ site-packages \ pywin32_system32".

¿Qué me falta y hay otra manera en la que puedo instalar Python + Python Win32 + módulo adicional una vez y hacer que se ejecuta en muchas máquinas? No tengo acceso a las herramientas de gestión de sistemas de Microsoft, así que tengo que ser un poco más baja tecnología que eso.

¿Fue útil?

Solución

En cada máquina tiene que ejecutar siguiendo básicamente pywin32_postinstall.py -install vez. Asumiendo que su instalación de Python en la red es N:\Python26, ejecute siguiente comando en cada cliente:

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

Otra cosa importante es Good Luck!. La razón es que puede que tenga que hacer esto como admin. En mi caso, la configuración trabajó para todas menos una computadora. Seguía sin entender por qué.

Otros consejos

Python (o precisamente, el sistema operativo) busca en los archivos DLL utilizando os.environ [ "PATH"] y no por la búsqueda sys.path.

Por lo que podría iniciar Python usando un archivo .cmd sencilla vez que añade \ server \ share \ Python26 a la trayectoria (dado el instalador (o) copiado los archivos DLL de \ server \ share \ Python26 \ lib \ site-packages \ system32 pywin32-a \ server \ share \ Python26).

O, se puede añadir el siguiente código a sus secuencias de comandos antes de que intenten importar 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

"" "He buscado en el directorio de pitón para la pywintypes24.dll y está presente en 'Lib \ site-packages \ pywin32_system32' ''". La existencia de la DLL no está en cuestión. Es ese punto de entrada en ese archivo DLL?

¿Usted ha intentado instalar exactamente la misma configuración en una unidad fuera de la red?

¿Usted ha intentado importar otros módulos en el paquete?

Ha revisado los archivos DLL con la dependencia andador o algo similar?

¿El "24" en pywintypes24.dll media Python 2.4? ¿Qué versión de Python que se ejecuta?

ejecutar en el arranque a

  • Montar el recurso compartido de red (net use \\server\share)
  • Copie los instaladores de Python y paquetes desde el recurso compartido de red en una carpeta local
  • Compruebe la versión del instalador MSI en contra de la versión instalada
  • Si es diferente, desinstalación Python y todos los paquetes dependientes de la versión
  • reinstalar todos los paquetes

Esto sería más o menos un rollo de su propio sistema de gestión central de dicho software.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top