How can I install packages using pip according to the requirements.txt file from a local directory?
Categories:
Installing Python Packages from a Local requirements.txt File

Learn how to efficiently install Python packages listed in a requirements.txt
file directly from a local directory, ensuring consistent environments and offline capabilities.
When developing Python applications, managing dependencies is crucial. The requirements.txt
file is a standard way to declare these dependencies, allowing for reproducible environments. While pip install -r requirements.txt
typically fetches packages from PyPI, there are scenarios where you might need to install packages that are not publicly available, are custom-built, or you simply want to work offline. This article will guide you through the process of installing packages from a requirements.txt
file when those packages reside in a local directory.
Understanding Local Package Installation with pip
Pip, Python's package installer, is highly versatile. It can install packages from various sources, including PyPI, version control systems, local project directories, and local archives (like .whl
or .tar.gz
files). When you specify a package in requirements.txt
, pip usually looks for it on PyPI by default. To instruct pip to look for packages locally, you need to provide a path to the local directory where your packages are stored.
flowchart TD A[Start] --> B{Has requirements.txt?} B -- Yes --> C[Create Virtual Environment (Optional but Recommended)] C --> D[Download/Place Packages in Local Directory] D --> E[Run pip install with --find-links and -r] E --> F{Packages Installed?} F -- Yes --> G[End] F -- No --> H[Troubleshoot: Check Paths, Package Names, Versions] H --> E
Workflow for installing local packages via requirements.txt
Preparing Your Environment and Local Packages
Before you can install local packages, you need to ensure your environment is set up correctly and your packages are accessible. It's highly recommended to use a virtual environment to isolate your project's dependencies from your system's Python installation.
1. Step 1: Create and Activate a Virtual Environment
A virtual environment prevents conflicts between project dependencies. Navigate to your project directory and run the following commands:
2. Step 2: Place Your Local Packages
Ensure all the packages you intend to install locally are present in a designated directory. This directory can contain .whl
files, .tar.gz
archives, or even unzipped package directories. For this example, let's assume you have a directory named local_packages
at the root of your project.
3. Step 3: Define Your requirements.txt
Your requirements.txt
file should list the package names and optionally their versions, just as you would for PyPI packages. Pip will use these names to match against the files in your local directory.
# Create a virtual environment
python3 -m venv venv
# Activate the virtual environment (Linux/macOS)
source venv/bin/activate
# Activate the virtual environment (Windows)
.\venv\Scripts\activate
Creating and activating a virtual environment
# requirements.txt example
my-custom-package==1.0.0
another-local-lib
requests==2.28.1 # This will still be fetched from PyPI if not found locally
Example requirements.txt
file
Installing Packages from a Local Directory
The key to installing local packages is the --find-links
(or -f
) option with pip install
. This option tells pip to look for packages in the specified local directory in addition to PyPI.
# Assuming 'local_packages' is in the same directory as your requirements.txt
pip install --no-index --find-links=./local_packages -r requirements.txt
Command to install packages from a local directory
--no-index
flag is crucial if you want to force pip to only look in your local directory and not fall back to PyPI. If you want pip to check local first and then PyPI, omit --no-index
.Let's break down the command:
pip install
: The standard pip installation command.--no-index
: This tells pip to ignore the package index (PyPI) entirely. It will only look for packages in the locations specified by--find-links
.--find-links=./local_packages
(or-f ./local_packages
): This specifies the local directory where pip should search for packages. You can provide multiple--find-links
arguments or a URL to a local HTML page containing links to packages.-r requirements.txt
: Instructs pip to install all packages listed in therequirements.txt
file.
--find-links
accordingly. For example, ../path/to/my_local_libs
or an absolute path like /home/user/my_project/local_packages
.Common Scenarios and Troubleshooting
While the process is straightforward, you might encounter a few issues. Here are some common scenarios and how to address them.
Scenario 1: Package Not Found
If pip reports that a package listed in requirements.txt
cannot be found, even with --find-links
:
- Check the package name and version: Ensure the name and version in
requirements.txt
exactly match the local package file (e.g.,my_custom_package-1.0.0-py3-none-any.whl
should bemy-custom-package==1.0.0
inrequirements.txt
). - Verify the
--find-links
path: Double-check that the path to your local packages directory is correct and accessible. - Ensure package integrity: Make sure the local package files (
.whl
,.tar.gz
) are not corrupted.
Scenario 2: Mixing Local and PyPI Packages
If some packages are local and others are on PyPI, simply omit the --no-index
flag. Pip will first check your --find-links
locations and then fall back to PyPI for any packages it doesn't find locally.
# Pip will check ./local_packages first, then PyPI
pip install --find-links=./local_packages -r requirements.txt
Installing with a mix of local and PyPI packages