Este é o leia-me das extensões Python para Win32 (pywin32), que fornece acesso a muitas das APIs do Windows a partir do Python.
Consulte CHANGES.txt para alterações notáveis recentes.
Os documentos são uma história longa e triste, mas agora existe uma versão online do arquivo de ajuda que acompanha os instaladores (obrigado @ofek!). Muito disso é muito antigo, mas alguns são gerados automaticamente e atuais. Adoraria ajudar a desembaraçar os documentos!
Sinta-se à vontade para abrir problemas para todos os bugs (ou suspeitos de bugs) no pywin32. solicitações pull para todos os bugs ou recursos também são bem-vindas.
No entanto, não abra problemas do github para solicitações de suporte gerais ou para problemas ou dúvidas usando os módulos deste pacote - eles serão fechados. Para tais questões, envie um e-mail para a lista de discussão python-win32 - observe que você deve estar inscrito na lista antes de postar.
As versões binárias não são mais suportadas.
O Build 306 foi o último com instaladores .exe. Você realmente não deveria usá-los, mas se realmente precisar deles, encontre-os aqui
Você deve instalar o pywin32 via pip - por exemplo,
python -m pip install --upgrade pywin32
Existe um script pós-instalação (veja abaixo) que não deve ser executado em ambientes virtuais; ele só deve ser executado em instalações "globais".
Para alterações não lançadas, você pode baixar compilações feitas por ações do github - escolha qualquer "fluxo de trabalho" do branch main
e baixe seus "artefatos")
Fora de um ambiente virtual, você pode querer instalar objetos COM, serviços, etc. Você pode fazer isso executando:
python Scripts/pywin32_postinstall.py -install
Da raiz da sua instalação do Python.
Se você fizer isso com permissões normais, será global para o seu usuário (alguns arquivos serão copiados para a raiz da instalação do Python e algumas alterações serão feitas no HKCU). Se você executar isso a partir de um processo elevado, será global para a máquina (os arquivos serão copiados para o System32, o HKLM será alterado, etc.)
Para executar como um serviço, você provavelmente deseja instalar o pywin32 globalmente a partir de um prompt de comando elevado - veja acima.
Você também precisa garantir que o Python esteja instalado em um local onde o usuário que executa o serviço tenha acesso à instalação e seja capaz de carregar pywintypesXX.dll
e pythonXX.dll
. Em particular, a conta LocalSystem
normalmente não terá acesso à estrutura de diretórios %USER%
local.
Se você encontrar algum problema ao atualizar, como o seguinte:
The specified procedure could not be found
Entry-point not found
Geralmente significa uma de 2 coisas:
Você atualizou uma instalação onde o script de pós-instalação foi executado anteriormente. Então você deve executá-lo novamente:
python Scripts/pywin32_postinstall.py -install
Isso fará algumas pequenas tentativas de limpar instalações conflitantes mais antigas.
Existem outras DLLs pywin32 instaladas em seu sistema, mas em um local diferente das novas. Isso às vezes acontece em ambientes que vêm com o pywin32 pré-enviado (por exemplo, anaconda?).
As possíveis soluções aqui são:
pywintypesXX.dll
e pythoncomXX.dll
(onde XX
é a versão do Python - por exemplo, "39") Instale o Visual Studio 2019 (provavelmente funciona mais tarde, mas as opções podem ser diferentes), siga as instruções em Ambiente de compilação para a versão que você instalar.
(os compiladores gratuitos provavelmente também funcionam, mas não foram testados - conte-me suas experiências!)
setup.py
é um script de construção padrão do distutils, então você provavelmente deseja:
python setup.py install
ou
python setup.py --help
Alguns módulos precisam de SDKs obscuros para serem compilados - setup.py
deve ser bem-sucedido, informando normalmente por que falhou ao compilá-los - se a compilação realmente falhar com sua configuração, abra um problema.
As etapas a seguir são executadas ao fazer um novo lançamento - principalmente para formar uma lista de verificação para que @mhammond não se esqueça do que fazer :)
Desde a build 307 o processo de lançamento é baseado nos artefatos criados pelas ações do Github.
Certifique-se de que CHANGES.txt tenha tudo que vale a pena observar. Atualize o cabeçalho para refletir a versão e data prestes a ser lançada, confirme-o.
Atualize setup.py com o novo número de compilação. Atualize CHANGES.txt para ter uma nova seção de título para a próxima versão não lançada. (ou seja, uma seção nova e vazia "Chegando na versão XXX, ainda não lançada")
Envie essas alterações para o github, aguarde a conclusão das ações e baixe os artefatos dessa execução.
Carregue artefatos .whl para pypi - fazemos isso antes de enviar a tag porque eles podem ser rejeitados por um README.md
inválido. Feito via py -3.? -m twine upload dist/*XXX*.whl
.
Crie uma nova tag git para o lançamento.
Atualize setup.py com o novo número de compilação + ".1" (por exemplo, 123.1), para garantir que futuras compilações de teste não sejam confundidas com a versão real.
Certifique-se de que tudo foi enviado para o github, incluindo a tag (ou seja, git push --tags
)
Envie e-mail para python-win32
Este é o processo antigo usado quando um ambiente de desenvolvimento local era usado para criar as compilações. O Build 306 foi o último lançado com esse processo.
Certifique-se de que CHANGES.txt tenha tudo que vale a pena observar. Atualize o cabeçalho para refletir a versão e data prestes a ser lançada, confirme-o.
Atualize setup.py com o novo número de compilação.
Execute make_all.bat
, espere para sempre, teste os artefatos.
Carregue artefatos .whl para pypi - fazemos isso antes de enviar a tag porque eles podem ser rejeitados por um README.md
inválido. Feito via py -3.? -m twine upload dist/*XXX*.whl
.
Confirme setup.py (para que o novo número de compilação esteja no repositório), crie uma nova tag git
Faça upload dos instaladores .exe para o github.
Atualize setup.py com o novo número de compilação + ".1" (por exemplo, 123.1), para garantir que futuras compilações de teste não sejam confundidas com a versão real.
Certifique-se de que tudo foi enviado para o github, incluindo a tag (ou seja, git push --tags
)
Envie e-mail para python-win32