Come posso utilizzare pywin32 con un virtualenv senza dover includere cartella site-packages del ambiente host?

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

Domanda

Sto lavorando con PyInstaller sotto Python 2.6, che è solo in parte sostenuto a causa del disordine MS hanno creato con la loro nonense manifesta che ora colpisce Python data la MSVC8 compilato.

Il problema è che il sostegno embedding manifesto si basa sulla pywin32 estensioni al fine di costruire che è un dolore perché senza compresa la cartella site-packages del padrone di casa quando creo il virtualenv (sconfigge un pò il punto in un ambiente di compilazione) non riesco a trovare un modo per installare le estensioni necessarie in modo che siano accessibili a PyInstaller.

Qualcuno ha trovato una soluzione a questo problema?

È stato utile?

Soluzione 3

OK, bene da quando ho dovuto trovare una via d'uscita ho improvvisato. Ho internamente creato un repository git con una versione hacked-insieme di pywin32 che installerà entro un virtualenv utilizzando lo script setup.py standard. Ci sono voluti un sacco di armeggiare per farlo funzionare a destra ma sono riuscito a farlo per caricare e il codice dipendente ora funziona come ho bisogno di. Se le persone si sentono questo sarebbe di beneficio per la comunità prega di inviare un commento. Se ho abbastanza cercherò di mettere qualcosa sul mio conto github

Altri suggerimenti

http://old.nabble.com/ finestre: -virtualenv-e-pywin32 - td27658201.html (ora un link morto), che ha offerto la seguente soluzione:

  1. http://sourceforge.net/projects/pywin32/files/ per la URL del exe che si desidera
  2. Attiva il tuo virtualenv
  3. Esegui easy_install http://PATH.TO/EXE/DOWNLOAD

Questo funziona con le versioni moderne di setuptools (circa febbraio 2014, riportati da tovmeod nei commenti).


Se si sta utilizzando una vecchia versione di setuptools (o distribuirlo fuse nuovamente dentro setuptools), è possibile ottenere questo messaggio di errore:

  

errore: C: \ Users \ bla \ AppData \ Local \ Temp \ easy_install-ibkzv7 \ pywin32-214.win32-py2.6.exe non è un valido distutils di Windows exe

In questo caso:

  1. Scarica il file EXE da soli
  2. Attiva il tuo virtualenv
  3. Esegui easy_install DOWNLOADED_FILE.exe

Io invece spera provato "pip install" piuttosto che "easy_install", ma questo non ha funzionato, e probabilmente mai lo (citazione necessaria).


Infine, ho trovato ma non ho ancora testato una soluzione a http://www.mail-archive.com/python-list@python.org/msg272040.html che è:

  

Risolto questo copiando il file pywin32.pth nelle mie virtualenv site-packages   e la modifica del file per puntare al percorso.

Se le altre opzioni non funzionano per voi, forse questa volontà?

Per Python 2.7 o uso 3.x pypiwin32 .

pip install pypiwin32

Questo potrebbe essere stato migliorato rispetto risposta precedente, dal momento che ho installato con successo su pywin32 sandbox su più macchine senza "hack" specifiche:

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

Testato con seguente ambiente:

Modifica: Gratta e questo, per ora, sembra essere alcuni problemi con l'installazione ancora ...

mi sono un po 'stanco di tutta la situazione, e appena creato un set di ruote convertiti ( "ruota convertito "). Cercherò di tenerli una manutenzione per il più recente costruzione, ma non gridare se ci sono dei problemi.

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

L'installazione può essere fatto facilmente utilizzando pip e indicando il pacchetto corrisponde alla tua versione e l'architettura. Ad esempio, per Python 3.5 / amd64:

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

Caveat: Il processo --upgrade attualmente non riesce, come la procedura di disinstallazione non è in grado di pulire dopo se stessa (Accesso negato durante la pulizia di win32api.pyd) - questo è solo quando si rimuove la directory temporanea, che può essere cancellati manualmente. Il modo più semplice per aggirare questo è disinstallare e reinstallare, invece di migliorare, quindi eliminare manualmente la cartella temporanea.

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