125 votes

Puis-je installer des packages windows Python dans virtualenvs ?

Virtualenv est grand: il me permet de garder un certain nombre de différentes Python installations ainsi que les différents projets dépendances ne sont pas tous jetés ensemble dans une commune de la pile.

Mais si je veux installer un paquet sur Windows qui est emballé comme une .exe installer, comment puis-je direct à installer dans le virtualenv? Par exemple, j'ai pycuda-0.94rc.win32-py2.6.exe. Quand je le lance, il examine le registre, et ne trouve qu'un seul Python26 à installer dans la commune, que mon virtualenv est basé sur de.

Comment puis-je direct à installer dans le virtualenv?

201voto

Piotr Dobrogost Points 14412

Si, tu peux. Tout ce dont vous avez besoin est

easy_install binary_installer_built_with_distutils.exe

Surpris ? On dirait que les installateurs binaires menuiseries avec distutils allient .exe .zip dans un seul fichier .exe. Modifier extension en .zip pour voir que c’est un fichier zip valide. J’ai découvert cela après avoir lu les réponses à ma question où je peux télécharger des oeufs binaires avec psycopg2 pour Windows ?

70voto

Tritium21 Points 1255

Je sais que c'est tout à fait une vieille question, et date d'avant les outils, je suis sur le point de parler, mais pour l'amour de Google, je pense que c'est une bonne idée de le mentionner. easy_install est le mouton noir de python emballage. Personne ne veut admettre l'utiliser avec le nouveau hotness de pip autour. Aussi, tout en jouant de registre astuces fonctionnent mieux pour les non-standard EXE installateurs (quelqu'un a construit le programme d'installation eux-mêmes au lieu d'utiliser distutils, et de la vérification du registre pour le chemin d'installation), il y a maintenant une Meilleure Façon(c) pour EXE standard installateurs.

pip install wheel
wheel convert INSTALLER.EXE
pip install NEW_FILE_CREATED_IN_LAST_STEP.whl

La roue format, introduite récemment comme de ce post, est le remplacement de l'œuf format, remplissant le même rôle. Ce format est également pris en charge par le pip (un outil est déjà installé dans votre virtualenv).

si, pour quelque raison, pip install WHEELFILE ne fonctionne pas, essayez wheel install WHEELFILE

40voto

Ned Batchelder Points 128913

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 le Python dans le Registre, exécutez le programme d' installation de Windows, puis configurer le registre de retour:

 # -*- encoding: utf-8 -*-
#
# script to register Python 2.0 or later for use with win32all
# and other extensions that require Python registry settings
#
# Adapted by Ned Batchelder from a script
# written by Joakim Löw for Secret Labs AB / PythonWare
#
# source:
# http://www.pythonware.com/products/works/articles/regpy20.htm

import sys

from _winreg import *

# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix

regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)

def RegisterPy():
    try:
        reg = OpenKey(HKEY_LOCAL_MACHINE, regpath)
    except EnvironmentError:
        try:
            reg = CreateKey(HKEY_LOCAL_MACHINE, regpath)
        except Exception, e:
            print "*** Unable to register: %s" % e
            return

    SetValue(reg, installkey, REG_SZ, installpath)
    SetValue(reg, pythonkey, REG_SZ, pythonpath)
    CloseKey(reg)
    print "--- Python %s at %s is now registered!" % (version, installpath)

if __name__ == "__main__":
    RegisterPy()
 

Exécutez ce script avec le Python que vous souhaitez enregistrer et il sera entré dans le registre. Notez que sous Windows 7 et Vista, vous aurez besoin de privilèges d'administrateur.

7voto

Simon King Points 206

easy_install est capable d'installer des paquets .exe à condition qu'ils aient été créés avec 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 un problème avec lequel j'ai lutté)

0voto

simplyharsh Points 11663

Vous pouvez utiliser easy_install pour installer PyCUDA.

 dev-env-path/bin/easy_install pycuda
 

il vous donnera la même version 0.94rc.

Sur Windows, easy_install.exe sera dans le répertoire Scripts.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X