Virtualenv est génial: cela me permet de conserver un certain nombre d'installations Python distinctes afin que les dépendances de différents projets ne soient pas toutes jetées ensemble dans une pile commune.
Mais si je veux installer un package sur Windows qui est fourni en tant que programme d'installation .exe, comment puis-je le diriger vers l'installation dans le virtualenv? Par exemple, j'ai pycuda-0.94rc.win32-py2.6.exe. Lorsque je l'exécute, il examine le registre et ne trouve qu'un seul Python26 dans lequel installer, celui sur lequel mon virtualenv est basé.
Comment puis-je l'installer dans le virtualenv?
python
windows
virtualenv
Ned Batchelder
la source
la source
Réponses:
Oui, vous pouvez. Tout ce dont tu as besoin c'est
Surpris? Il ressemble à des installateurs binaires pour Windows réalisés avec distutils combinant .exe avec .zip dans un seul fichier .exe. Changez l'extension en .zip pour voir qu'il s'agit d'un fichier zip valide. J'ai découvert cela après avoir lu les réponses à ma question Où puis-je télécharger des œufs binaires avec psycopg2 pour Windows?
METTRE À JOUR
Comme l'a noté Tritium21 dans sa réponse de nos jours, vous devriez utiliser pip au lieu de easy_install. Pip ne peut pas installer de packages binaires créés par distutils mais il peut installer des packages binaires dans le nouveau format de roue . Vous pouvez convertir l'ancien format au nouveau en utilisant le package wheel , que vous devez d'abord installer.
la source
Je sais que c'est une question assez ancienne et antérieure aux outils dont je vais parler, mais pour le bien de Google, je pense que c'est une bonne idée de la mentionner. easy_install est le mouton noir de l'emballage python. Personne ne veut admettre l'avoir utilisé avec la nouvelle sensation de pépin. De plus, tout en jouant des astuces de registre fonctionnera mieux pour les installateurs EXE non standard (quelqu'un a construit le programme d'installation lui-même au lieu d'utiliser distutils, et vérifie le registre pour le chemin d'installation), il existe maintenant un meilleur moyen (c) pour les installateurs EXE standard .
Le format de roue, introduit récemment à partir de cet article, remplace le format d'oeuf, remplissant à peu près le même rôle. Ce format est également pris en charge par pip (un outil déjà installé dans votre virtualenv).
si pour une raison quelconque
pip install WHEELFILE
ne fonctionne pas, essayezwheel install WHEELFILE
la source
wheel install WHEELFILE
, réponse modifiée pour souligner l'existence de cela. Déboguer un problème spécifique pour quelqu'un n'est pas quelque chose de trivial dans les commentaires SO.J'ai fini par adapter un script ( http://effbot.org/zone/python-register.htm ) pour enregistrer une installation Python dans le registre. Je peux choisir le Python pour être le Python dans le Registre, exécutez le programme d' installation de Windows, puis définissez l'arrière de Registre:
Exécutez ce script avec le Python que vous souhaitez enregistrer, et il sera inscrit dans le registre. Notez que sous Windows 7 et Vista, vous aurez besoin de privilèges d'administrateur.
la source
regpath = "SOFTWARE\\Wow6432Node\\Python\\Pythoncore\\%s\\" % (version)
easy_install est capable d'installer des paquets .exe tant qu'ils ont été construits en utilisant la cible bdist_wininst de distutils, qui couvre de nombreux paquets populaires. Cependant, il y en a beaucoup d'autres qui ne le sont pas (wxPython est celui avec lequel j'ai eu du mal)
la source
Vous pouvez utiliser easy_install de l'environnement pour installer PyCUDA.
il vous donnera la même version 0.94rc.
Sous Windows, easy_install.exe sera dans le répertoire Scripts.
la source
Si c'est un
.msi
, vous pourrez peut-être spécifier des options de ligne de commande à l'aide demsiexec
. Le programme d' installation Python lui-même permetTARGETDIR
, mais je ne suis pas sûr que distutils intègre cela dans les installateurs de distribution.Si vous utilisez a
.exe
, je ne pense pas qu'il y ait un moyen propre. Une option consiste à utiliser un programme tel que 7Zip (ou winzip, etc.) pour extraire directement le contenu de l'exe, puis copier les dossiers concernés dans votre dossier de packages de sites virtuels. Par exemple, si j'extrait "processing-0.5.2.win32-py2.5.exe", je trouve un dossier "PLATLIB \ processing" que je copie dans un chemin virtualenv et que j'utilise sans aucun problème d'exécution. (Je ne suis pas sûr que ce soit toujours aussi simple.)la source