Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between pip3 and python3 -m pip

Tags:

I am trying to install some packages using pip and python3. I am using MacOS, so by default when I run pip, it uses my version of Python 2.

I have been able to install a package in python 3 by using:

$ pip3 install package_name 

However, I am able to do the same by (at least it seems):

$ python3 -m pip install package_name 

I wonder whether or not pip3 and python3 -m pip have the same effect.

like image 510
lmiguelvargasf Avatar asked Dec 23 '16 19:12

lmiguelvargasf


2 Answers

They are the same. If you look at the pip3 file in the bin folder it calls the main function from the pip module.

pip3 install package_name runs pip3 file in the bin folder:

# bin/pip3  # or bin/pip if using pip install package_name  import re import sys  from pip import main  if __name__ == '__main__':     sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0])     sys.exit(main()) 

python3 -m pip install package_name runs the __init__.py file of the pip module.

# pip/__init__.py if __name__ == '__main__':     sys.exit(main()) 

Both of them run the same main() function

like image 168
tihom Avatar answered Oct 13 '22 21:10

tihom


As @tihorn says, pip3 and python3 -m pip should be the same. There is at least one exception: if they are not in the same path. I had the following setup:

$ which pip3 /usr/bin/pip3 $ which python3 /home/username/anaconda3/bin/python3 

After installing modules with pip3 and verifying with pip3 freeze, I was not able to access them when running python3 my_script.py or python3 -c 'import my_module'. I was getting a ModuleNotFound error.

like image 21
craq Avatar answered Oct 13 '22 20:10

craq