How Do You Set Up Python in Airgapped Environments Without Internet?

March 13, 2025

The vast majority of modern software development revolves around one big assumption: that you always have a network connection. If you don’t, it’s typically because you’re on an airplane with no Wi-Fi, and that’s temporary. But what about when you’re in an environment where there’s no connection by design? How do you, a Python developer, deal with working on a system that has either undependable network connectivity or none at all? Setting up Python in airgapped environments doesn’t just pose a challenge; it requires a meticulous approach to ensure that everything you need is available offline. Let’s explore how you can tackle this scenario step by step.

1. Collect the Necessary Components

To successfully set up Python in an airgapped environment, you need to start by collecting all the necessary components for your project. This involves careful planning and foresight.

Python Interpreter

The first step is to obtain the Python interpreter for the specific version you need. On Windows or macOS, this part is relatively straightforward; you can simply download the installer executable from the official Python website. Once downloaded, you can easily transfer the file to your airgapped system using a removable storage device.

For Linux users, obtaining the Python interpreter can be more complex due to varying package management systems. For example, if you’re using Ubuntu or Debian, you can utilize a tool like apt-offline. This utility allows you to download packages and all their dependencies on a machine with an internet connection and then install them on your airgapped machine. This means you’ll need to generate a script for obtaining Python and all required dependencies, which can later be executed on a networked machine.

Python Packages

Next, you need to collect all the Python packages required for your projects. Python packages are typically distributed as .whl files, which are self-contained and easy to install. You can use the pip download command to download the .whl file for a particular package and save it in your current working directory. This command is incredibly useful because it ensures that you have everything you need ready for offline installation.

For more complex projects, you might rely on a requirements.txt file, which lists all of the packages your project depends on. You can download all the packages listed in this file by using the pip download -r command. This approach ensures that all necessary dependencies are included, but it requires that you compile a clean list using the pip freeze command from a working environment where everything is already installed. This file, often named requirements.txt, will be your blueprint for downloading all the packages you need.

2. Transfer the Files and Install the Interpreter and Applications

After gathering all the necessary components, the next step is transferring the files to your airgapped system and setting up the interpreter and applications.

Transferring the Files

The easiest way to transfer the files is by using external storage devices such as USB drives, external hard drives, or even DVDs. Simply copy all the downloaded installers and .whl files onto your storage device and physically transfer them to the airgapped machine. Given that the target machine lacks internet access, this physical transfer step is critical.

Installing the Python Interpreter

Installing the Python interpreter on Windows and macOS typically involves running the installer executable and following the on-screen instructions. This process is straightforward and well-documented. For Linux, you’ll need to follow specific instructions based on your distribution’s package manager for offline installations. For instance, the dpkg command might be used on Debian-based systems to install the Python packages and their dependencies. Always refer to your distribution’s documentation for accurate steps.

Setting Up a Virtual Environment

Once the Python interpreter is installed, it’s time to set up a virtual environment for your project. A virtual environment allows you to manage dependencies in an isolated space, which is especially useful when working on multiple projects. Create a virtual environment using the python -m venv command. After activating the virtual environment, use the following command to install the project’s requirements:

pip install  --no-index -f /path/to/wheels

This command tells pip to install the packages listed in your requirements file without checking the internet. Instead, it searches for .whl files in the specified directory, ensuring that the installation proceeds with locally available files.

If you’re working on developing the project itself and need to do an in-place editable install, use the following variant:

pip install -e . --no-index -f /path/to/wheels

This command will use the configuration in your pyproject.toml file for installation. However, it is critical that all required packages are available locally; otherwise, the installation will fail.

3. Handle Third-Party Dependencies

The most complex aspect of setting up Python in airgapped environments often involves handling third-party dependencies that are not packaged as Python wheels.

Copying and Setting Up Dependencies

Some Python packages depend on non-Python components, such as C libraries or other third-party tools. For example, some packages require compiling extensions written in C, which necessitates a C compiler on the target machine. A common choice for a C compiler on Windows is the Microsoft Visual C++ Compiler (MSVC), used by CPython.

For installations that require these third-party tools, you’ll need to transfer additional files and set up these dependencies offline. This might involve more complex steps, such as creating an offline installer for the Visual Studio C++ Build Tools, which allows you to install only the command-line tools you need without the full Visual Studio suite.

Creating an Offline Installation Package for Visual Studio C++ Build Tools

Modern software development mostly hinges on the assumption that there’s always a stable network connection. If you’re offline, it’s usually due to temporary situations like being on an airplane without Wi-Fi. But what happens when you’re in an environment intentionally designed to be without a network connection? This is often the case in highly secure settings where connectivity is restricted. How do you, as a Python developer, manage working on systems with unreliable or no network connectivity? This challenge doesn’t just require ingenuity; it demands a careful, thorough strategy to make sure all the necessary tools and libraries are available offline. Preparing for airgapped environments as a Python developer involves several steps, from setting up repositories locally to ensuring you’ve mirrored all dependencies. It’s a meticulous process, but with careful planning, you can effectively work in these constrained scenarios. Let’s dive into how you can systematically address and overcome these unique obstacles.

Subscribe to our weekly news digest.

Join now and become a part of our fast-growing community.

Invalid Email Address
Thanks for Subscribing!
We'll be sending you our best soon!
Something went wrong, please try again later