Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Installing multiple versions of a package with pip

Tags:

python

pip

In my application I would like to use:

  • packageA, which requires packageX==1.3
  • packageB, which requires packageX==1.4
  • packageX==1.5

How can I install multiple versions of packageX with pip to handle this situation?

like image 257
limboy Avatar asked Jul 04 '11 11:07

limboy


People also ask

Can pip install multiple packages?

To pip install more than one Python package, the packages can be listed in line with the same pip install command as long as they are separated with spaces. Here we are installing both scikit-learn and the statsmodel package in one line of code. You can also upgrade multiple packages in one line of code.

Can I install two versions of a Python package on the same computer?

With maven or gradle you can install two versions of the same package, with pip you cant. Still you cant use two versions of the same package in the same program.

How do I install an older version of a Python package?

To install a specific version of a Python package you can use pip: pip install YourPackage==YourVersion . For example, if you want to install an older version of Pandas you can do as follows: pip install pandas==1.1. 3 .


2 Answers

pip won't help you with this.

You can tell it to install a specific version, but it will override the other one. On the other hand, using two virtualenvs will let you install both versions on the same machine, but not use them at the same time.

You best bet is to install both version manually, by putting them in your Python path with a different name.

But if your two libs expect them to have the same name (and they should), you will have to modify them so they pick up the version they need with some import alias such as:

import dependencyname_version as dependencyname 

There is currently no clean way to do this. The best you can hope is for this hack to work.

I'd rather ditch one of the two libs and replace it with an equivalent, or patch it to accept the new version of the dependency and give the patch back to the community.

like image 181
e-satis Avatar answered Oct 22 '22 03:10

e-satis


Download the source for ea. package. Install each on its own separate folder. For example. I had version 1.10 package, but wanted to switch to the dev version for some work. I downloaded the source for the dev module: git clone https://github.com/networkx/networkx.git cd netwokrx I created a folder for this version: mkdir /home/username/opt/python, then I set the PYTHONPATH env var to: export PYTHONPATH=/home/username/opt/python/lib/python2.7/site-packages/. Next, I installed it using: python setup.py install --prefix=/home/username/opt/python

Now, since my PYTHONPATH is now pointing to this other site-packages folder, when I run python on the command line, and import the new module, it works. To switch switch back, remove the new folder from PYTHONPATH.

>>> import networkx as nx >>> nx.__version__ '2.0.dev_20151209221101' 
like image 37
sAguinaga Avatar answered Oct 22 '22 04:10

sAguinaga