Instalando múltiples versiones de un paquete con pip

En mi aplicación me gustaría usar:

  • packageA , que requiere packageX==1.3
  • packageB , que requiere packageX==1.4
  • packageX==1.5

¿Cómo puedo instalar varias versiones de packageX con pip para manejar esta situación?

pip no te ayudará con esto

Puedes decirle que instale una versión específica, pero anulará la otra. Por otro lado, el uso de dos virtualenvs le permitirá instalar ambas versiones en la misma máquina, pero no usarlas al mismo tiempo.

Lo mejor que puedes hacer es instalar ambas versiones manualmente, colocándolas en tu ruta de Python con un nombre diferente.

Pero si sus dos bibliotecas esperan que tengan el mismo nombre (y deberían tenerlas), tendrá que modificarlas para que puedan elegir la versión que necesitan con un alias de importación como:

 import dependencyname_version as dependencyname 

Actualmente no hay una manera limpia de hacer esto. Lo mejor que puedes esperar es que este hack funcione.

Prefiero deshacerme de una de las dos bibliotecas y reemplazarla con una equivalente, o parchearla para aceptar la nueva versión de la dependencia y devolverle el parche a la comunidad.

Descarga la fuente para ea. paquete. Instale cada uno en su propia carpeta separada. Por ejemplo. Tenía el paquete de la versión 1.10, pero quería cambiar a la versión dev para algún trabajo. Descargué la fuente para el módulo dev: git clone https://github.com/networkx/networkx.git cd netowkrx una carpeta para esta versión: mkdir /home/username/opt/python , luego configuré el envio PYTHONPATH var a: export PYTHONPATH=/home/username/opt/python/lib/python2.7/site-packages/ . Luego, lo instalé usando: python setup.py install --prefix=/home/username/opt/python

Ahora, dado que mi PYTHONPATH ahora apunta a esta otra carpeta de paquetes de sitio, cuando ejecuto python en la línea de comandos, e importo el nuevo módulo, funciona. Para volver a cambiar, quite la nueva carpeta de PYTHONPATH.

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