Comment puis-je utiliser pywin32 avec un virtualenv sans avoir à inclure le dossier site-packages de l'environnement hôte ?

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

Question

je travaille avec PyInstaller sous Python 2.6, qui n'est que partiellement pris en charge en raison du désordre créé par MS avec leurs absurdités manifestes qui affectent désormais Python puisqu'il est désormais compilé en MSVC8.

Le problème est que la prise en charge de l'intégration du manifeste repose sur le pywin32 extensions afin de construire ce qui est pénible car sans inclure le dossier site-packages de l'hôte lorsque je crée le environnement virtuel (cela va un peu à l'encontre du but dans un environnement de construction) Je ne trouve pas de moyen d'installer les extensions requises afin qu'elles soient accessibles à PyInstaller.

Quelqu'un a-t-il trouvé une solution à ce problème ?

Était-ce utile?

La solution 3

OK, bien que je devais trouver une voie à suivre, j'improvise. Je l'ai créé en interne un dépôt git avec une version piratée-ensemble de pywin32 qui installera dans un virtualenv en utilisant le script standard setup.py. Il a fallu beaucoup de bricoler pour le faire fonctionner raison, mais je réussi à le faire charger et le code dépendant fonctionne maintenant comme je l'ai besoin pour. Si les gens se sentent que ce serait bénéfique pour la communauté s'il vous plaît poster un commentaire. Si je reçois assez, je vais essayer de mettre quelque chose sur mon compte github

Autres conseils

J'ai trouvé http://old.nabble.com/ windows: -virtualenv-et-pywin32 - td27658201.html (maintenant un lien mort) qui a offert la solution suivante:

  1. http://sourceforge.net/projects/pywin32/files/ pour la URL de l'exe que vous voulez
  2. Activer votre virtualenv
  3. Exécuter easy_install http://PATH.TO/EXE/DOWNLOAD

Cela fonctionne avec les versions modernes de setuptools (vers Février 2014 rapportés par tovmeod dans les commentaires).


Si vous utilisez une ancienne version de setuptools (ou le distribuer réincorporé dans setuptools), vous pouvez obtenir ce message d'erreur:

  

erreur: c: \ users \ blah \ AppData \ temp local \ \ easy_install-ibkzv7 \ pywin32-214.win32-py2.6.exe n'est pas un distutils Windows valide .exe

Dans ce cas:

  1. Télécharger le vous-même exe
  2. Activer votre virtualenv
  3. Exécuter easy_install DOWNLOADED_FILE.exe

Je préfère l'espérons essayé « pip installer » plutôt que « easy_install », mais cela n'a pas fonctionné, et probablement ne le sera jamais (citation nécessaire).


Enfin, j'ai trouvé, mais ne l'ai pas testé une solution à http://www.mail-archive.com/python-list@python.org/msg272040.html qui est:

  

Résolu en copiant le fichier pywin32.pth dans mon virtualenv site-packages   et la modification du fichier pour pointer vers le chemin.

Si les autres options ne fonctionnent pas pour vous, peut-être cette volonté?

Pour Python 2.7 ou l'utilisation 3.x pypiwin32 .

pip install pypiwin32

Cela peut avoir été améliorée depuis la réponse précédente, depuis que je suis pywin32 installé avec succès sur bac à sable sur plusieurs machines sans « hacks » spécifiques:

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

Testé avec l'environnement suivant:

Modifier:Grattez ceci pour l'instant, il semble y avoir encore des problèmes avec l'installation...

J'étais plutôt fatigué de toute la situation et je viens de créer un jeu de roues converties ("wheel convert <.exe>").J'essaierai de les maintenir à jour pour la version la plus récente, mais criez s'il y a des problèmes.

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

L'installation peut être effectuée facilement en utilisant pip et en pointant vers le package correspondant à votre version et à votre architecture.Par exemple, pour Python 3.5/amd64 :

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

Mise en garde:Le processus --upgrade échoue actuellement, car la procédure de désinstallation est incapable de nettoyer après elle-même (accès refusé lors du nettoyage de win32api.pyd) - ce n'est que lors de la suppression du répertoire temporaire, qui peut être supprimé manuellement.Le moyen le plus simple consiste à désinstaller et réinstaller au lieu de mettre à niveau, puis à supprimer manuellement le dossier temporaire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top