In meiner Bewerbung möchte ich verwenden:
packageA, welches benötigtpackageX==1.3packageB, welches benötigtpackageX==1.4packageX==1.5
Wie kann ich mehrere Versionen von packageXmit pip installieren , um diese Situation zu bewältigen?
In meiner Bewerbung möchte ich verwenden:
packageA, welches benötigt packageX==1.3packageB, welches benötigt packageX==1.4packageX==1.5Wie kann ich mehrere Versionen von packageXmit pip installieren , um diese Situation zu bewältigen?
packageX>=1.3,<2und packageX>=1.4,<2(vorausgesetzt, das Upstream-Paket X folgt der semantischen Versionierung ), dann hätten Sie als Entwickler der Downstream-App kein Problem damit, sie zu pinnen und zu verwenden, packageX==1.5und alle wären glücklich. Weitere Details hier
Antworten:
pip wird dir dabei nicht helfen.
Sie können festlegen, dass eine bestimmte Version installiert werden soll, die andere Version wird jedoch überschrieben. Wenn Sie jedoch zwei virtuelle Envs verwenden, können Sie beide Versionen auf demselben Computer installieren, aber nicht gleichzeitig verwenden.
Am besten installieren Sie beide Versionen manuell, indem Sie sie mit einem anderen Namen in Ihren Python-Pfad einfügen.
Wenn Ihre beiden Bibliotheken jedoch erwarten, dass sie denselben Namen haben (und sollten), müssen Sie sie ändern, damit sie die benötigte Version mit einem Importalias wie dem folgenden abrufen:
import dependencyname_version as dependencyname
Derzeit gibt es keine saubere Möglichkeit, dies zu tun. Das Beste, was Sie hoffen können, ist, dass dieser Hack funktioniert.
Ich würde lieber eine der beiden Bibliotheken fallen lassen und durch eine entsprechende ersetzen oder sie patchen, um die neue Version der Abhängigkeit zu akzeptieren und den Patch der Community zurückzugeben.
Laden Sie die Quelle für ea. Paket. Installieren Sie jedes in einem eigenen Ordner. Zum Beispiel. Ich hatte ein Paket der Version 1.10, wollte aber für einige Arbeiten zur Entwicklerversion wechseln. Ich habe die Quelle für das Dev-Modul heruntergeladen:
git clone https://github.com/networkx/networkx.git
cd netwokrx
Ich habe einen Ordner für diese Version erstellt:
mkdir /home/username/opt/pythonund dann die PYTHONPATH-Umgebungsvariable auf: gesetzt export PYTHONPATH=/home/username/opt/python/lib/python2.7/site-packages/. Als nächstes habe ich es installiert mit:python setup.py install --prefix=/home/username/opt/python
Da mein PYTHONPATH jetzt auf diesen anderen Site-Package-Ordner verweist, funktioniert es, wenn ich Python in der Befehlszeile ausführe und das neue Modul importiere. Entfernen Sie den neuen Ordner aus PYTHONPATH, um den Switch zurückzuschalten.
>>> import networkx as nx
>>> nx.__version__
'2.0.dev_20151209221101'
networkxVersionsunterschiede kämpfe !
sys.path