Pergunta

Preciso manter um grande número de máquinas Windows XP executando a mesma versão do Python, com uma variedade de módulos, um dos quais é o Python-Win32. Pensei em instalar o Python em uma unidade de rede montada por todas as máquinas clientes e apenas ajustar o caminho nos clientes. Python começa bem com a rede, mas ao importar o Win32com, recebo um erro pop-up dizendo:

O ponto de entrada do procedimento?

Depois de descartar o diálogo da mensagem, recebo no console:

Importorror: Falha na carga DLL: O procedimento especificado não foi encontrado.

Eu pesquisei no diretório Python para o pywintypes24.dll e ele está presente em "lib site-packages pywin32_system32".

O que estou perdendo e há outra maneira pela qual eu posso instalar o módulo Python + Python-Win32 + adicional uma vez e fazê-los funcionar em muitas máquinas? Não tenho acesso às ferramentas de gerenciamento de sistemas da Microsoft, por isso preciso ser um pouco mais de baixa tecnologia do que isso.

Foi útil?

Solução

Em todas as máquinas que você precisa executar basicamente pywin32_postinstall.py -install uma vez. Supondo que sua instalação python na rede seja N:\Python26, execute o seguinte comando em todos os clientes:

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

Outra coisa importante é Good Luck!. O motivo é que você pode precisar fazer isso como admin. No meu caso, essa configuração funcionou para todos, exceto um computador. Eu ainda não descobri o porquê.

Outras dicas

O Python (ou precisamente, o sistema operacional) procura as DLLs usando os.environ ["caminho"] e não pesquisando sys.path.

Assim, você pode iniciar o python usando um arquivo .cmd simples que adiciona server share python26 ao caminho (dado o instalador (ou você) copiou as dlls de server share python26 lib site-packages pywin32- System32 para Server Share Python26).

Ou você pode adicionar o seguinte código aos seus scripts antes de tentarem importar o 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

"" "Eu pesquisei no diretório Python para o pywintypes24.dll e ele está presente em" lib site-packages pywin32_system32 "" "". A existência da DLL não está em questão. Esse ponto de entrada é nessa DLL?

Você já tentou instalar exatamente a mesma configuração em uma unidade sem rede?

Você já tentou importar outros módulos no pacote?

Você verificou as DLLs com o Walker de dependência ou algo semelhante?

O "24" em pywintypes24.dll significa python 2.4? Qual versão do Python você está executando?

Você poderia usar arquivos em lote em execução na inicialização para

  • Monte o compartilhamento da rede (net use \\server\share)
  • Copie os instaladores do Python e dos pacotes do compartilhamento da rede para uma pasta local
  • Verifique a versão do instalador do MSI na versão instalada
  • Se diferente, desinstale o python e todos os pacotes dependentes da versão
  • Reinstale todos os pacotes

Isso seria praticamente um sistema de gerenciamento central para esse software.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top