Como posso usar pywin32 com um virtualenv sem ter que incluem pasta site-packages do ambiente de acolhimento?

StackOverflow https://stackoverflow.com/questions/1830304

Pergunta

Eu estou trabalhando com PyInstaller sob Python 2.6, que é suportada apenas parcialmente devido aos MS bagunça criaram com a sua nonense manifesto que agora afeta Python já que agora é MSVC8 compilado.

O problema é que o manifesto de apoio a incorporação depende do pywin32 extensões a fim de construir o que é uma dor, porque sem incluir site-packages do hospedeiro pasta quando eu criar o virtualenv (kinda derrota o ponto em um ambiente de construção) Eu não consigo encontrar uma maneira de instalar as extensões necessárias para que eles sejam acessíveis para PyInstaller.

Alguém já encontrou uma solução para este problema?

Foi útil?

Solução 3

OK, bem desde que eu tinha que encontrar uma maneira de avançar I improvisado. Criei internamente um repositório git com uma versão de conjunto cortado de pywin32 que irá instalar dentro de um virtualenv usando o script setup.py padrão. Levou um monte de mexer para fazer o trabalho direito, mas eu consegui-lo para carregar eo código dependente agora trabalha como eu preciso dele para. Se as pessoas sentem isso seria um benefício para a comunidade, por favor postar um comentário:. Se eu conseguir o suficiente Vou tentar colocar algo na minha conta github

Outras dicas

http://old.nabble.com/ do Windows: -virtualenv-and-pywin32 - td27658201.html (agora um link morto), que ofereceu a seguinte solução:

  1. http://sourceforge.net/projects/pywin32/files/ para o URL do exe que você quer
  2. Ative seu virtualenv
  3. Executar easy_install http://PATH.TO/EXE/DOWNLOAD

Isso funciona com versões modernas de setuptools (cerca de fevereiro de 2014 relatados por tovmeod nos comentários).


Se você estiver usando uma versão antiga do setuptools (ou distribuí-lo integrado de volta para setuptools), você pode receber essa mensagem de erro:

erro: C: \ Users \ blah \ AppData \ Local \ temp \ easy_install-ibkzv7 \ pywin32-214.win32-py2.6.exe não é um distutils válidos do Windows .exe

Em que caso:

  1. Faça o download do exe-se
  2. Ative seu virtualenv
  3. Executar easy_install DOWNLOADED_FILE.exe

Eu prefiro espero que tentou "pip instalar" em vez de "easy_install", mas isso não funcionou, e provavelmente nunca vai (carece de fontes).


Finalmente, eu encontrei, mas não testei uma solução em http://www.mail-archive.com/python-list@python.org/msg272040.html que é:

Resolvido isso copiando o arquivo pywin32.pth em meus VIRTUALENV site-packages e editar o arquivo para apontar para o caminho.

Se as outras opções não funcionam para você, talvez esta vontade?

Para Python 2.7 ou 3.x uso pypiwin32 .

pip install pypiwin32

Esta pode ter sido melhorado desde resposta anterior, desde que eu tenha instalado com sucesso pywin32 na sandbox em várias máquinas sem qualquer específicas "hacks":

$ virtualenv sandbox
$ sandbox\scripts\activate
(sandbox) $ git clone https://github.com/Travis-Sun/pywin32.git
(sandbox) $ cd pywin32
(sandbox) $ python setup.py install

Testado com seguinte ambiente:

Editar: Risque isso por agora, parece haver alguns problemas com a instalação ainda ...

Eu fiquei bastante cansado de toda a situação, e acabou de criar um conjunto de rodas convertidos ( "roda converso <.exe>"). Vou tentar mantê-los mantido para a compilação mais recente, mas fazê grito se há algum problema.

https://tr00st.co.uk/python/wheel/pywin32/

A instalação pode ser feito facilmente usando pip e apontando para o pacote combinando a sua versão e arquitetura. Por exemplo, para Python 3.5 / amd64:

pip instalar https: // tr00st. co.uk/python/wheel/pywin32/pywin32-219-cp35-none-win_amd64.whl

Advertência: O processo --upgrade atualmente falhar, como o procedimento de desinstalação é incapaz de limpar depois de si (acesso negado ao limpar win32api.pyd) - este é somente para remover o diretório temporário, que pode ser manualmente excluídos. maneira mais fácil de contornar isso é desinstalar e reinstalar em vez de atualizar, então excluir manualmente a pasta temporária.

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