Dealing with multiple Python versions and PIP?
The current recommendation is to use python -m pip
, where python
is the version of Python you would like to use. This is the recommendation because it works across all versions of Python, and in all forms of virtualenv. For example:
# The system default python:
$ python -m pip install fish
# A virtualenv's python:
$ .env/bin/python -m pip install fish
# A specific version of python:
$ python-3.6 -m pip install fish
Previous answer, left for posterity:
Since version 0.8, Pip supports pip-{version}
. You can use it the same as easy_install-{version}
:
$ pip-2.5 install myfoopackage
$ pip-2.6 install otherpackage
$ pip-2.7 install mybarpackage
EDIT: pip changed its schema to use pipVERSION
instead of pip-VERSION
in version 1.5. You should use the following if you have pip >= 1.5
:
$ pip2.6 install otherpackage
$ pip2.7 install mybarpackage
Check https://github.com/pypa/pip/pull/1053 for more details
References:
- https://github.com/pypa/pip/issues/200
http://www.pip-installer.org/docs/pip/en/0.8.3/news.html#id4
https://pip.pypa.io/en/stable/news/#v0-8 or
https://web.archive.org/web/20140310013920/http://www.pip-installer.org:80/docs/pip/en/0.8.3/news.html#id4
How do I deal with pip in different python versions?
If you have your python2
binary located, you can just call it directly:
/usr/bin/python2 -m pip install googlemaps
And if you're not sure where your python binary is, you can use
import sys
print(sys.executable)
to locate it.
And if you don't have pip, you should install it by downloading this file:
https://bootstrap.pypa.io/get-pip.py
then running:
/usr/bin/python2 get-pip.py
How to run pip from different versions of python using the python command?
Finally I found the solution myself, see the Docs:
https://docs.python.org/3/installing/index.html?highlight=pip#work-with-multiple-versions-of-python-installed-in-parallel
Just call:
pythonXX -m pip install SomePackage
That would work separately for each version of installed python.
Also, according to the docs, if we want to do the same thing in windows, the command is a bit different:
py -2 -m pip install SomePackage # default Python 2
py -2.7 -m pip install SomePackage # specifically Python 2.7
py -3 -m pip install SomePackage # default Python 3
py -3.4 -m pip install SomePackage # specifically Python 3.4
How to route pip specific version to a specific python version?
The easy solution on Windows is to use the -m option through the corresponding python executable. The only requirement then is that you have the python executables separate, which you seem to have already found a solution for.
py2 -m pip install somemodule
py3 -m pip install somemodule
If you need to make the separate executables work, my quick and dirty fix for that is to copy the corresponding executables, rename them to py2/py3 or python2/python3, then put them in the C:\Windows folder. They will work in a new cmd session after that.
To make separate executables in a more organized fashion, copy executables for python 2 and 3 into a folder in the C:\Users\eraw\AppData\Local\Programs\Python\executables folder, rename them in whatever way best suits you (py,python,python2,python3, etc.), then add that folder to the windows path variable by going to my computer(Windows 7) or this pc(Windows 10) -> Advanced settings -> Environment Variables -> Edit path variable. Be careful on Windows 7 and earlier to use a semicolon and NOT USE ANY SPACES.
How to run multiple Python versions on Windows
Running a different copy of Python is as easy as starting the correct executable. You mention that you've started a python instance, from the command line, by simply typing python
.
What this does under Windows, is to trawl the %PATH%
environment variable, checking for an executable, either batch file (.bat
), command file (.cmd
) or some other executable to run (this is controlled by the PATHEXT
environment variable), that matches the name given. When it finds the correct file to run the file is being run.
Now, if you've installed two python versions 2.5 and 2.6, the path will have both of their directories in it, something like PATH=c:\python\2.5;c:\python\2.6
but Windows will stop examining the path when it finds a match.
What you really need to do is to explicitly call one or both of the applications, such as c:\python\2.5\python.exe
or c:\python\2.6\python.exe
.
The other alternative is to create a shortcut to the respective python.exe
calling one of them python25
and the other python26
; you can then simply run python25
on your command line.
How to run Pip commands from CMD
Little side note for anyone new to Python who didn't figure it out by theirself: this should be automatic when installing Python, but just in case, note that to run Python using the python
command in Windows' CMD you must first add it to the PATH
environment variable, as explained here.
To execute Pip, first of all make sure you have it installed, so type in your CMD:
> python
>>> import pip
>>>
And it should proceed with no error. Otherwise, if this fails, you can look here to see how to install it. Now that you are sure you've got Pip, you can run it from CMD with Python using the -m
(module) parameter, like this:
> python -m pip <command> <args>
Where <command>
is any Pip command you want to run, and <args>
are its relative arguments, separated by spaces.
For example, to install a package:
> python -m pip install <package-name>
Install a module using pip for specific python version
Use a version of pip
installed against the Python instance you want to install new packages to.
In many distributions, there may be separate python2.6-pip
and python2.7-pip
packages, invoked with binary names such as pip-2.6
and pip-2.7
. If pip is not packaged in your distribution for the desired target, you might look for a setuptools or easyinstall package, or use virtualenv (which will always include pip in a generated environment).
pip's website includes installation instructions, if you can't find anything within your distribution.
Installing specific package version with pip
TL;DR:
pip install -Iv
(i.e.pip install -Iv MySQL_python==1.2.2
)
What these options mean:
-I
stands for--ignore-installed
which will ignore the installed packages, overwriting them.-v
is for verbose. You can combine for even more verbosity (i.e.-vv
) up to 3 times (e.g.-Ivvv
).
For more information, see pip install --help
First, I see two issues with what you're trying to do. Since you already have an installed version, you should either uninstall the current existing driver or use pip install -I MySQL_python==1.2.2
However, you'll soon find out that this doesn't work. If you look at pip's installation log, or if you do a pip install -Iv MySQL_python==1.2.2
you'll find that the PyPI URL link does not work for MySQL_python v1.2.2. You can verify this here: http://pypi.python.org/pypi/MySQL-python/1.2.2
The download link 404s and the fallback URL links are re-directing infinitely due to sourceforge.net's recent upgrade and PyPI's stale URL.
So to properly install the driver, you can follow these steps:
pip uninstall MySQL_python
pip install -Iv http://sourceforge.net/projects/mysql-python/files/mysql-python/1.2.2/MySQL-python-1.2.2.tar.gz/download
Related Topics
Python/Ipython Importerror: No Module Named Site
Authenticate from Linux to Windows SQL Server with Pyodbc
How to Do Parallel Programming in Python
How to Make an Immutable Object in Python
What Does a Python Process Return Code -9 Mean
How to Limit Memory Usage Within a Python Process
How to Install and Import Python Modules at Runtime
Connect Wifi with Python or Linux Terminal
Socketserver.Threadingtcpserver - Cannot Bind to Address After Program Restart
Linux: Pipe into Python (Ncurses) Script, Stdin and Termios
Trying to Import a Module: Undefined Symbol: Pyunicodeucs4_Decodeutf8
Pil Installation Fails Missing:Stdarg.H
How to Set Explicitly the Terminal Size When Using Pexpect
The Correct Cmakelists.Txt File to Call a Maxon Libarary in a Python Script Using Pybind11
How to Install Python MySQLdb Module Using Pip
How to Get the Input from the Tkinter Text Widget