Virtualenv ist großartig: Ich kann eine Reihe unterschiedlicher Python-Installationen beibehalten, damit die Abhängigkeiten verschiedener Projekte nicht alle zu einem gemeinsamen Stapel zusammengefasst werden.
Aber wenn ich ein Paket unter Windows installieren möchte, das als EXE-Installationsprogramm gepackt ist, wie kann ich es anweisen, es in der virtuellen Umgebung zu installieren? Zum Beispiel habe ich pycuda-0.94rc.win32-py2.6.exe. Wenn ich es ausführe, überprüft es die Registrierung und findet nur einen Python26, in den es installiert werden kann, den allgemeinen, auf dem meine virtuelle Umgebung basiert.
Wie kann ich es anweisen, in der virtuellen Umgebung zu installieren?
python
windows
virtualenv
Ned Batchelder
quelle
quelle
Antworten:
Ja, du kannst. Alles was Sie brauchen ist
Überrascht? Es sieht so aus, als würden Binärinstallationsprogramme für Windows, die mit distutils erstellt wurden, EXE mit ZIP in einer EXE-Datei kombinieren. Ändern Sie die Erweiterung in .zip, um festzustellen, ob es sich um eine gültige Zip-Datei handelt. Ich habe dies entdeckt, nachdem ich Antworten auf meine Frage gelesen hatte. Wo kann ich binäre Eier mit psycopg2 für Windows herunterladen?
AKTUALISIEREN
Wie Tritium21 in seiner heutigen Antwort feststellte, sollten Sie pip anstelle von easy_install verwenden. Pip kann durch distutils erstellt Binärpakete nicht installieren , aber es kann Binärpakete im neuen installieren Rad - Format. Sie können aus altem Format in die neuen konvertieren mit Rad - Paket, das Sie zuerst installieren.
quelle
Ich weiß, dass dies eine ziemlich alte Frage ist und älter ist als die Tools, über die ich sprechen werde, aber für Google halte ich es für eine gute Idee, sie zu erwähnen. easy_install ist das schwarze Schaf der Python-Verpackung. Niemand möchte zugeben, dass er es mit der neuen Schärfe von Pip verwendet. Während das Spielen von Registrierungstricks für nicht standardmäßige EXE-Installer am besten funktioniert (jemand hat das Installationsprogramm selbst erstellt, anstatt distutils zu verwenden, und überprüft die Registrierung auf den Installationspfad), gibt es jetzt einen besseren Weg (c) für Standard-EXE-Installer .
Das kürzlich in diesem Beitrag eingeführte Radformat ist der Ersatz für das Eiformat und spielt fast die gleiche Rolle. Dieses Format wird auch von pip unterstützt (einem Tool, das bereits in Ihrer virtuellen Umgebung installiert ist).
Wenn es aus irgendeinem Grund
pip install WHEELFILE
nicht funktioniert, versuchen Sie eswheel install WHEELFILE
quelle
wheel install WHEELFILE
, antworten Sie bearbeitet, um auf die Existenz davon hinzuweisen. Das Debuggen eines bestimmten Problems für jemanden ist in SO-Kommentaren nicht trivial.Am Ende habe ich ein Skript ( http://effbot.org/zone/python-register.htm ) angepasst , um eine Python-Installation in der Registrierung zu registrieren. Ich kann den Python holen zu sein der Python in der Registrierung, das Windows - Installationsprogramm ausführen, dann die Registrierung wieder eingestellt:
Führen Sie dieses Skript mit dem Python aus, für den Sie registriert werden möchten, und es wird in die Registrierung eingegeben. Beachten Sie, dass Sie unter Windows 7 und Vista Administratorrechte benötigen.
quelle
regpath = "SOFTWARE\\Wow6432Node\\Python\\Pythoncore\\%s\\" % (version)
easy_install ist in der Lage, EXE-Pakete zu installieren, solange sie mit dem Ziel bdist_wininst von distutils erstellt wurden, das viele beliebte Pakete abdeckt. Es gibt jedoch viele andere, die dies nicht tun (wxPython ist eines, mit dem ich zu kämpfen habe)
quelle
Sie können easy_install der Umgebung verwenden, um PyCUDA zu installieren.
es wird Ihnen die gleiche Version 0.94rc geben.
Unter Windows befindet sich easy_install.exe im Skriptverzeichnis.
quelle
Wenn dies der
.msi
Fall ist, können Sie möglicherweise Befehlszeilenoptionen mit angebenmsiexec
. Das Python- Installationsprogramm selbst erlaubt esTARGETDIR
, aber ich bin mir nicht sicher, ob distutils dies in Distributionsinstallationsprogrammen backt.Wenn Sie ein verwenden
.exe
, gibt es meines Erachtens keinen sauberen Weg. Eine Möglichkeit besteht darin, ein Programm wie 7Zip (oder winzip usw.) zu verwenden, um den Inhalt der exe direkt zu extrahieren, und dann die relevanten Ordner in Ihren Ordner für virtuelle Site-Pakete zu kopieren. Wenn ich beispielsweise "procedure-0.5.2.win32-py2.5.exe" extrahiere, finde ich einen Ordner "PLATLIB \ process", den ich in einen virtuellen Pfad kopiere und ohne Laufzeitprobleme verwende. (Ich bin mir nicht sicher, ob es immer so einfach ist.)quelle