web-dev-qa-db-fra.com

Installation de plusieurs versions d'un package avec pip

Dans mon application, j'aimerais utiliser:

  • packageA, ce qui nécessite packageX==1.3
  • packageB, ce qui nécessite packageX==1.4
  • packageX==1.5

Comment puis-je installer plusieurs versions de packageX avec pip pour gérer cette situation?

61
limboy

pip ne vous aidera pas avec ça.

Vous pouvez lui dire d'installer une version spécifique, mais elle remplacera l'autre. D'un autre côté, l'utilisation de deux virtualenv vous permettra d'installer les deux versions sur la même machine, mais de ne pas les utiliser en même temps.

Le mieux est d'installer les deux versions manuellement, en les mettant dans votre chemin Python avec un nom différent.

Mais si vos deux bibliothèques s'attendent à ce qu'elles aient le même nom (et elles le devraient), vous devrez les modifier pour qu'elles choisissent la version dont elles ont besoin avec un alias d'importation tel que:

import dependencyname_version as dependencyname

Il n'existe actuellement aucun moyen propre de le faire. Le mieux que vous puissiez espérer est que ce hack fonctionne.

Je préfère abandonner l'une des deux bibliothèques et la remplacer par un équivalent, ou la corriger pour accepter la nouvelle version de la dépendance et rendre le correctif à la communauté.

45
e-satis

Téléchargez la source pour ea. paquet. Installez chacun sur son propre dossier séparé. Par exemple. J'avais le package de la version 1.10, mais je voulais passer à la version de développement pour certains travaux. J'ai téléchargé la source du module de développement: git clone https://github.com/networkx/networkx.gitcd netowkrx J'ai créé un dossier pour cette version: mkdir /home/username/opt/python, puis j'ai défini la variable d'environnement PYTHONPATH sur: export PYTHONPATH=/home/username/opt/python/lib/python2.7/site-packages/. Ensuite, je l'ai installé en utilisant: python setup.py install --prefix=/home/username/opt/python

Maintenant, puisque mon PYTHONPATH pointe maintenant vers cet autre dossier de packages de site, lorsque j'exécute python sur la ligne de commande et importe le nouveau module, cela fonctionne. Pour basculer en arrière, supprimez le nouveau dossier de PYTHONPATH.

>>> import networkx as nx
>>> nx.__version__
'2.0.dev_20151209221101'
12
sAguinaga