One of the most essential tools that make Python one of the best languages is its package manager called ‘pip’.
pip is a recursive acronym for pip, which installs packages. It is written in Python itself and is the most preferred package manager. It is a command-line tool and can be used to install, modify, or delete all the packages available in the Python Package Index on your system within your command-line interface (CLI). From version 3.4 of Python, pip started coming in pre-installed with the Python language itself.
In this article, we’re going to see how we can install a package using pip, and then we’ll see how we can install multiple packages at the same time. Let’s get started.
What’s a Python package?
Simply put, a Python package is nothing more than a directory that may or may not include Python files but which always includes the necessary constructor file init.py. A Python package is a collection of related modules that have been bundled together in a directory for distribution. You can import a package you’ve written into another Python module, and the functions and classes in that package can be utilized in that module.
If you wish to make your package available to other Python users, you may even submit it to PyPI (Python Package Index). Once there, all Python users will be able to access your package. Simple pip command within the command line into their system.
Related: Python packages – what are they?
What is the Python Package Index (PyPI)?
The Python Package Index helps extend the functionalities of the standard Python library. The standard Python library has a lot of modules that are built in Python. The Python Package Index allows you to distribute packages you’ve created among other Python programmers. The process of pushing a package to the Python Package Index is simple, and every Python programmer can do it. Once you’ve pushed a Python package to the Python Package Index, it can be used by other Python programmers in their projects.
How to install a package with pip?
pip command allows you to install a Python package on your system from Python Package Index (PyPI).
To install a package with, you can use the following command line in your shell window.
pip install <package-name>
We can use the
--user flag to install a package for the current user only. Switching to a different user will make all these packages, all the packages installed with the
--user command will not be available, and you’ll need to install it again.
pip install <package_name> --user
--upgrade flag can be used to upgrade an already existing package in your system.
pip install --upgrade <package_name>
How to install multiple Python packages using pip?
To install multiple packages at once using the pip command, you can pass multiple package names in the pip install command and the tool will install all of them into your system.
pip install numpy matplotlib scipy
"==" operator is used to specify the version of the package you want to install. When you just use the
pip install <package-name> command, the pip manager installs the latest version of the package you’ve requested to install. Sometimes, you don’t need the latest version of the package. You may need some previous versions of a package to resolve some compatibility issues. But most of the time, installing a lower version of a package will lead to compatibility issues. So you need to be cautious before doing it.
pip install package_name==numpy
When we try to install a specific version of the
numPy library, you can see that I had a version of numPy installed beforehand on my system, and Pip had to uninstall that to install another version of the package. When we uninstall that previous package, you can see that the other packages which were dependent on that version of the numPy broke, and consecutively the error for it is shown.
"requirements.txt" text file is the standard way of installing all the packages required for a Python project. In this process, you create a file named requirement.txt and then write the name of all the packages you need in that project and also specify the version limits.
First, we’ll create the requirement.txt file and write all the packages required in our project with their version specified.
numpy==1.19.5 pandas==1.3.0 scipy==1.7.0 matplotlib==3.4.2
After that, we can use the pip install command with the
-r flag to install all the projects mentioned in this requirement.txt file.
pip install -r requirements.txt
Doing so installed all the mentioned packages of their respective versions just like it would if you’d directly install it with the pip command.
How to install all Python packages using pip? ( not recommended)
Now the requirements.txt file may have sped up the process of setting up your project a bit, but you still needed to write all that text in the file. Even then, you got only one project setup. What if another project needs another package? You will need to rewrite the entire requirements.txt. So if you want, you can use these methods to install all the libraries available at the PyPI (Python Package Index).
But there’s no direct way to install all packages directly from the pip command. But there are some workarounds to get a list of all package names and then pass them into pip install.
To install all the packages at the Python Package Index, you can use this method.
The pip search command, in pair with the grep tool and some cut commands, will let you install all the packages available at the Python Package Index.
"pip search"(Not supported in latest versions of pip)
The pip search command returns a text file with the name of all the packages available in the Python Package Index. This text file can be passed in the pip install command just like before to install all the packages available at the Python Package Index. You can use the following command to do so.
pip search . > all_packages.txt
The pip search command was discontinued in December 2020 due to various reasons, with one of the major reasons being the downfalls of installing all the packages at the same time.
Why is installing all packages at once bad?
The reasons why you should not do so are:
- One Python package is often dependent on other Python packages, and sometimes different Python packages are dependent on different versions of the same package. This will lead to compatibility issues.
- The Python Package Index contains 1000s of packages. Installing all of them will fill up your storage and will lead to disk usage issues.
- Installing all the packages will also lead to management and maintenance issues of the packages in your system, as it will clutter your environment.
- Installing all packages will also install the packages which have security vulnerabilities. This raises security risks too.
In the end, the best way to install dependencies for your project is to use to requirements.txt file. Installing all the packages at the Python Package Index may seem like a good idea as it would save time that you would waste on writing the commands each time, but it sure isn’t. There are too many negative points in doing so. As a fellow Python programmer, I would recommend you to use the requirements.txt method if you’re installing packages for a project else, you can directly use the pip install command to install a single package.
Stack Overflow thread for the same question.