I am using OSX and I have pip installed for both Python3.5 and Python2.7. I know I can run the command pip2
to use Python2 and when I use the command pip3
Python3.x will be used.
The problem is that the default of pip
is set to Python2.7 and I want it to be Python3.x.
How can I change that?
edit: No, I am not running a virtual environment yet. If it was a virtual environment I could just run Python3.x and forget all about Python2.7, unfortunately since OSX requires Python2.7 for it's use I can't do that. Hence why I'm asking this.
Thanks for the answer. I however don't want to change what running python
does. Instead I would like to change the path that running pip
takes. At the moment pip -V
shows me pip 8.1.2 from /Library/Python/2.7/site-packages (python 2.7)
, but I am looking for pip 8.1.2 from /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages (python 3.5)
I am sure there has to be a way to do this. Any ideas?
For your projects, you should be using a virtualenv.
You can choose which python will be that of the virtualenv at creation time, by specifying it on the command line:
That python interpreter will be the one used when you run
python
orpip
while the virtualenv is active.Under the hood, activating the virtualenv will:
PATH
environment setting so binaries inenv/bin
override those from your system.PYTHONHOME
environment setting so python modules are loaded fromenv/lib
.So
python
,pip
and any other package you install withpip
will be run from the virtualenv, with the python version you chose and the package versions you installed in the virtualenv.Other than this, running
python
without using virtualenv will just run the default python of the system, which you cannot usually change as it would break a lot of system scripts.Since you have specified in the comments you want syntax like
pip install [package]
to work, here is a solution:Install
setuptools
forPython3
:apt-get install python3-setuptools
Now
pip
forPython3
could be installed by:python3 -m easy_install pip
Now you can use
pip
with the specific version of Python to install package for Python 3 by:pip-3.2 install [package]
Run this:
or even more explicit:
This will install pip for Python 3 and make Python 3 version of pip default.
Validate with:
I always just run it via Python itself, this way:
or
The
-m
calls the__main__.py
module of a specified package. Pip supports this.Can't you
alias pip='pip3'
in your~/.bash_profile
?In Terminal, run
nano ~/.bash_profile
, then add a line to the end that readsalias pip='pip3'
. This is safe; it won't affect system processes, only your terminal.Although PEP 394 does not specifically mention
pip
, it does discuss a number of other Python-related commands (includingpython
itself). The short version is that, for reasons of backwards compatibility, the unversioned commands should refer to Python 2.x for the immediate future on most reasonable systems.Generally, these aliases are implemented as symbolic links, and you can just flip the symlink to point at the version you want (e.g. with
ln -f -s $(which pip3) $(which pip)
as root). But it may not be a good idea if you have any software that expects to interact with Python 2 (which may be more than you think since a lot of software interacts with Python).The saner option is to set up a Virtualenv with Python 3. Then, within the Virtualenv, all Python-related commands will refer to 3.x instead of 2.x. This will not break the system, unlike the previous paragraph which could well break things.