Docker Python Alpine Gcc



Docker 的核心思想就是如何将应用整合到容器中,并且能在容器中实际运行。 将应用整合到容器中并且运行起来的这个过程,称为容器化(Containerizing),有时也叫作Docker化(Dockerizing). Python Compatibility. The binary packages include bindings for Python 3 only. The Python-based tools assume that a python binary is available at /usr/bin/python, but that may not be true on recent versions of Alpine. If you encounter errors like: not found, you can try creating a symlink to the Python 3.x binary like so.

The Visual Studio Code Remote - WSL extension lets you use the Windows Subsystem for Linux (WSL) as your full-time development environment right from VS Code. You can develop in a Linux-based environment, use Linux-specific toolchains and utilities, and run and debug your Linux-based applications all from the comfort of Windows.

The extension runs commands and other extensions directly in WSL so you can edit files located in WSL or the mounted Windows filesystem (for example /mnt/c) without worrying about pathing issues, binary compatibility, or other cross-OS challenges.

This code responds to requests with our 'Hello World' greeting. HTTP handling is done by a Gunicorn web server in the container. When directly invoked for local use, this code creates a basic web server that listens on the port defined by the PORT environment variable. Make sure you have Python and GCC installed: pacman - S mingw - w64 - x8664 - gcc mingw - w64 - x8664 - python3 mingw - w64 - x8664 - python3 - pip mingw - w64 - x8664 - python3 - setuptools.

This lets VS Code provide a local-quality development experience — including full IntelliSense (completions), code navigation, and debugging — regardless of where your code is hosted.

Getting started

Note: After reviewing this topic, you can get started with the introductory WSL tutorial.

Installation

To get started, you need to:

  1. Install the Windows Subsystem for Linux along with your preferred Linux distribution.

    Note: WSL 1 does have some known limitations for certain types of development. Also, extensions installed in Alpine Linux may not work due to glibc dependencies in native source code inside the extension. See the Remote Development and Linux article for details.

  2. Install Visual Studio Code on the Windows side (not in WSL).

    Note: When prompted to Select Additional Tasks during installation, be sure to check the Add to PATH option so you can easily open a folder in WSL using the code command.

  3. Install the Remote Development extension pack.

Open a remote folder or workspace

From the WSL terminal

Opening a folder inside the Windows Subsystem for Linux in VS Code is very similar to opening up a Windows folder from the command prompt or PowerShell.

  1. Open a WSL terminal window (using the start menu item or by typing wsl from a command prompt / PowerShell).

  2. Navigate to a folder you'd like to open in VS Code (including, but not limited to, Windows filesystem mounts like /mnt/c)

  3. Type code . in the terminal. When doing this for the first time, you should see VS Code fetching components needed to run in WSL. This should only take a short while, and is only needed once.

    Note: If this command does not work, you may need to restart your terminal or you may not have added VS Code to your path when it was installed.

  4. After a moment, a new VS Code window will appear, and you'll see a notification that VS Code is opening the folder in WSL.

    VS Code will now continue to configure itself in WSL and keep you up to date as it makes progress.

  5. Once finished, you now see a WSL indicator in the bottom left corner, and you'll be able to use VS Code as you would normally!

That's it! Any VS Code operations you perform in this window will be executed in the WSL environment, everything from editing and file operations, to debugging, using terminals, and more.

From VS Code

Alternatively, you can open a Remote WSL window directly from VS Code:

  1. Start VS Code.
  2. Press F1, select Remote-WSL: New Window for the default distro or Remote-WSL: New Window using Distro for a specific distro.
  3. Use the File menu to open your folder.

If you already have a folder open, you can also use the Remote-WSL: Reopen in WSL command. You will be prompted which distro to use.

If you are in a WSL window and want to open the current input in a local window, use Remote-WSL: Reopen in Windows.

From the Windows command prompt

To open a WSL window directly from a Windows prompt use the --remote command line parameter:

code --remote wsl+<distro name> <path in WSL>

for example: code --remote wsl+Ubuntu /home/jim/projects/c

Working with Git

If you are working with the same repository in WSL and Windows, be sure to set up consistent line endings. See tips and tricks for details.

You can also avoid passwords by configuring WSL to use the Windows Git credential manager. See tips and tricks for details.

Managing extensions

VS Code runs extensions in one of two places: locally on the UI / client side, or in WSL. While extensions that affect the VS Code UI, like themes and snippets, are installed locally, most extensions will reside inside WSL.

Docker Python Alpine Gcc Login

Docker Python Alpine Gcc

If you install an extension from the Extensions view, it will automatically be installed in the correct location. Once installed, you can tell where an extension is installed based on the category grouping. There will be Local - Installed category and one for WSL.

Note: If you are an extension author and your extension is not working properly or installs in the wrong place, see Supporting Remote Development for details.

Local extensions that actually need to run remotely will appear dimmed and disabled in the Local - Installed category. Select Install to install an extension on your remote host.

You can also install all locally installed extensions inside WSL by going to the Extensions view and selecting Install Local Extensions in WSL: [Name] using the cloud button at the right of the Local - Installed title bar. This will display a drop down where you can select which locally installed extensions to install in your WSL instance.

Opening a terminal in WSL

Opening a terminal in WSL from VS Code is simple. Once folder is opened in WSL, any terminal window you open in VS Code (Terminal > New Terminal) will automatically run in WSL rather than locally.

You can also use the code command line from this same terminal window to perform a number of operations such as opening a new file or folder in WSL. Type code --help to see what options are available from the command line.

Debugging in WSL

Once you've opened a folder in WSL, you can use VS Code's debugger in the same way you would when running the application locally. For example, if you select a launch configuration in launch.json and start debugging (F5), the application will start on remote host and attach the debugger to it.

See the debugging documentation for details on configuring VS Code's debugging features in .vscode/launch.json.

WSL specific settings

VS Code's local user settings are also reused when you have opened a folder in WSL. While this keeps your user experience consistent, you may want to vary some of these settings between your local machine and WSL. Fortunately, once you have connected to WSL, you can also set WSL specific settings by running the Preferences: Open Remote Settings command from the Command Palette (F1) or by selecting the Remote tab in the Settings editor. These will override any local settings you have in place whenever you open a folder in WSL.

Advanced: Environment setup script

When VS Code Remote is started in WSL, no shell startup scripts are run. This was done to avoid issues with startup scripts that are tuned for shells. If you want to run additional commands or modify the environment this can be done in a setup script ~/.vscode-server/server-env-setup (Insiders: ~/.vscode-server-insiders/server-env-setup). If present, the script is processed before the server is started.

The script needs to be a valid Bourne shell script. Be aware that an invalid script will prevent the server from starting up. If you end up with a script that prevents the server from starting, you will have to use a regular WSL shell and delete or rename the setup script.

Check the WSL log (Remote WSL: Open WSL Log) for output and errors.

Advanced: Opening a WSL 2 folder in a container

If you are using WSL 2 and Docker Desktop's WSL 2 back-end, you can use the Remote - Containers extension to work with source code stored inside WSL! Just follow these steps:

Docker Python Alpine Gcc Download

  1. If you have not already, install and setup Docker Desktop's WSL 2 support.

    Tip: Go to Settings > Resources > WSL Integration and enable Docker integration with the WSL distribution you will be using.

  2. If you have not already, install the Remote - Containers extension along with the WSL extension.

  3. Next, open your source code folder in WSL as you would normally.

  4. Once your folder is open in WSL, select Remote-Containers: Reopen Folder in Container from the Command Palette (F1).

  5. If the folder does not have a .devcontainer/devcontainer.json file in it, you'll be asked to pick a starting point from a filterable list or an existing Dockerfile or Docker Compose file (if one exists).

  6. The VS Code window (instance) will reload and start building the dev container. A progress notification provides status updates.

  7. After the build completes, VS Code will automatically connect to the container. You can now work with the your source code from inside the container.

See the Remote - Containers documentation for more information.

Known limitations

This section contains a list of common know issues with WSL. The intent is not to provide a complete list of issues but to highlight some of the common problems seen with WSL.

See here for a list of active issues related to WSL.

I see EACCESS: permission denied error trying to rename a folder in the open workspace in WSL 1

That's a known problem with the WSL file system implementation (Microsoft/WSL#3395, Microsoft/WSL#1956) caused by the file watcher active by VSCode. The issue will only be fixed in WSL 2.

To avoid the issue, set remote.WSL.fileWatcher.polling to true. However, polling based file watching has a performance impact for large workspaces.

For large workspace you want to increase the polling interval: remote.WSL.fileWatcher.pollingInterval and control the folders that are watched: files.watcherExclude.

WSL 2 does not have that file watcher problem is also not affected by the new setting.

Golang in WSL 1

IssueExisting issues
Delve debugger doesn't work under WSLgo-delve/delve#810, Microsoft/vscode-go#926

Node.js in WSL 1

Install
IssueExisting issues
NodeJS Error: spawn EACCES (different variants of this error)Microsoft/WSL#3886
Webpack HMR not workingMicrosoft/WSL#2709
Firebase via node unusably slow only on WSLMicrosoft/WSL#2657

Git limitations

If you clone a Git repository using SSH and your SSH key has a passphrase, VS Code's pull and sync features may hang when running remotely. Either use an SSH key without a passphrase, clone using HTTPS, or run git push from the command line to work around the issue.

Docker Extension limitations

While the Docker extension can run both remotely and locally, if it is already installed locally, you will be unable to install on a remote SSH host without first uninstalling it locally. We will address this problem in a future VS Code release.

Extension limitations

Many extensions will work in WSL without modification. However, in some cases, certain features may require changes. If you run into an extension issue, see here for a summary of common problems and solutions that you can mention to the extension author when reporting the issue.

In addition, some extensions installed in an WSL when using an Alpine Linux-based distribution may not work due to glibc dependencies in native code inside the extension. See the Remote Development with Linux article for details.

Common questions

Why am I asked to change the default distro?

When using Remote-WSL: New Window using Distro and running on WSL older than Windows 10, May 2019 Update (version 1903) you will be asked to switch the default distribution as the WSL command can only work on the default distro as it does not support the -d option yet.

You can always manually switch the default distro by using wslconfig.exe.

For example:

You can see which distributions you have installed using:

I'm seeing an error about a missing library or dependency

Some extensions rely on libraries not found in the vanilla install of certain WSL Linux distributions. You can add additional libraries into your Linux distribution by using its package manager. For Ubuntu and Debian based distributions, run sudo apt-get install <package> to install the needed libraries. Check the documentation for your extension or the runtime that is mentioned for additional installation details.

What are the connectivity requirements for the Remote - WSL extension?

The Remote - WSL extension and VS Code Server require outbound HTTPS (port 443) connectivity to:

  • update.code.visualstudio.com
  • marketplace.visualstudio.com
  • vscode.blob.core.windows.net
  • *.vo.msecnd.net (Azure CDN)
  • *.gallerycdn.vsassets.io (Azure CDN)

Some extensions (like C#) download secondary dependencies from download.microsoft.com or download.visualstudio.microsoft.com. Others (like Visual Studio Live Share) may have additional connectivity requirements. Consult the extension's documentation for details if you run into trouble.

All other communication between the server and the VS Code client is accomplished through an random local TCP port. You can find a list of locations VS Code itself needs access to in the network connections article.

I'm behind a proxy and have connectivity issues

Proxy settings might be missing on either the Windows or the WSL side.

When a remote window is opened out of VSCode, the Remote - WSL extension tries to download the VSCode server on the Windows side. It therefore uses the Window side proxy configuration:

  • inherited from the OS settings
  • as described in Network Connections in Visual Studio Code

When the remote VSCode is started from a WSL terminal, the download is done using wget in the WSL distro. Proxy settings can be configured in:

  • wget proxy settings: https://stackoverflow.com/questions/11211705/how-to-set-proxy-for-wget
  • manually in the server setup script

Once the server is up and running the proxy settings on the Remote tab are used.

Can I force an extension to run locally / remotely ?

Extensions are typically designed and tested to either run locally or remotely, not both. However, if an extension supports it, you can force it to run in a particular location in your settings.json file.

For example, the setting below will force the Docker extension to run locally and Debugger for Chrome extension to run remotely instead of their defaults:

A value of 'ui' instead of 'workspace' will force the extension to run on the local UI/client side instead. Typically, this should only be used for testing unless otherwise noted in the extension's documentation since it can break extensions. See the article on Supporting Remote Development for details.

As an extension author, what do I need to do?

The VS Code extension API abstracts away local/remote details so most extensions will work without modification. However, given extensions can use any node module or runtime they want, there are situations where adjustments may need to be made. We recommend you test your extension to be sure that no updates are required. See Supporting Remote Development for details.

Questions or feedback

  • See Tips and Tricks or the FAQ.
  • Search on Stack Overflow.
  • Add a feature requests or report a problem.
  • Contribute to our documentation or VS Code itself.
  • See our CONTRIBUTING guide for details.
Python

Warnings¶

Warning

Pillow and PIL cannot co-exist in the same environment. Before installing Pillow, please uninstall PIL.

Warning

Pillow >= 1.0 no longer supports “import Image”. Please use “from PIL import Image” instead.

Warning

Pillow >= 2.1.0 no longer supports “import _imaging”. Please use “from PIL.Image import core as _imaging” instead.

Python Support¶

Pillow supports these Python versions.

Python

3.9

3.8

3.7

3.6

3.5

3.4

3.3

3.2

2.7

2.6

2.5

2.4

Pillow >= 8.0

Yes

Yes

Yes

Yes

Pillow 7.0 - 7.2

Yes

Yes

Yes

Yes

Pillow 6.2.1 - 6.2.2

Yes

Yes

Yes

Yes

Yes

Pillow 6.0 - 6.2.0

Yes

Yes

Yes

Yes

Pillow 5.2 - 5.4

Yes

Yes

Yes

Yes

Yes

Pillow 5.0 - 5.1

Yes

Yes

Yes

Yes

Pillow 4

Yes

Yes

Yes

Yes

Yes

Pillow 2 - 3

Yes

Yes

Yes

Yes

Yes

Yes

Pillow < 2

Yes

Yes

Yes

Yes

Basic Installation¶

Note

The following instructions will install Pillow with support formost common image formats. See External Libraries for afull list of external libraries supported.

Install Pillow with pip:

Windows Installation¶

We provide Pillow binaries for Windows compiled for the matrix ofsupported Pythons in both 32 and 64-bit versions in the wheel format.These binaries have all of the optional libraries included exceptfor raqm, libimagequant, and libxcb:

To install Pillow in MSYS2, see Building on Windows using MSYS2/MinGW.

macOS Installation¶

We provide binaries for macOS for each of the supported Pythonversions in the wheel format. These include support for all optionallibraries except libimagequant and libxcb. Raqm support requireslibraqm, fribidi, and harfbuzz to be installed separately:

Linux Installation¶

We provide binaries for Linux for each of the supported Pythonversions in the manylinux wheel format. These include support for alloptional libraries except libimagequant. Raqm support requireslibraqm, fribidi, and harfbuzz to be installed separately:

Most major Linux distributions, including Fedora, Ubuntu and ArchLinuxalso include Pillow in packages that previously contained PIL e.g.python-imaging. Debian splits it into two packages, python3-piland python3-pil.imagetk.

FreeBSD Installation¶

Pillow can be installed on FreeBSD via the official Ports or Packages systems:

Ports:

Packages:

Note

The Pillow FreeBSD port and packagesare tested by the ports team with all supported FreeBSD versions.

Building From Source¶

Download and extract the compressed archive from PyPI.

External Libraries¶

Note

You do not need to install all supported external libraries touse Pillow’s basic features. Zlib and libjpeg are requiredby default.

Note

There are Dockerfiles in our Docker images repo to install thedependencies for some operating systems.

Many of Pillow’s features require external libraries:

  • libjpeg provides JPEG functionality.

    • Pillow has been tested with libjpeg versions 6b, 8, 9-9d andlibjpeg-turbo version 8.

    • Starting with Pillow 3.0.0, libjpeg is required by default, butmay be disabled with the --disable-jpeg flag.

  • zlib provides access to compressed PNGs

    • Starting with Pillow 3.0.0, zlib is required by default, but maybe disabled with the --disable-zlib flag.

  • libtiff provides compressed TIFF functionality

    • Pillow has been tested with libtiff versions 3.x and 4.0-4.1

  • libfreetype provides type related services

  • littlecms provides color management

    • Pillow version 2.2.1 and below uses liblcms1, Pillow 2.3.0 andabove uses liblcms2. Tested with 1.19 and 2.7-2.12.

  • libwebp provides the WebP format.

    • Pillow has been tested with version 0.1.3, which does not readtransparent WebP files. Versions 0.3.0 and above supporttransparency.

  • tcl/tk provides support for tkinter bitmap and photo images.

  • openjpeg provides JPEG 2000 functionality.

    • Pillow has been tested with openjpeg 2.0.0, 2.1.0, 2.3.1 and 2.4.0.

    • Pillow does not support the earlier 1.5 series which shipswith Debian Jessie.

  • libimagequant provides improved color quantization

    • Pillow has been tested with libimagequant 2.6-2.14.1

    • Libimagequant is licensed GPLv3, which is more restrictive thanthe Pillow license, therefore we will not be distributing binarieswith libimagequant support enabled.

  • libraqm provides complex text layout support.

    • libraqm provides bidirectional text support (using FriBiDi),shaping (using HarfBuzz), and proper script itemization. As aresult, Raqm can support most writing systems covered by Unicode.

    • libraqm depends on the following libraries: FreeType, HarfBuzz,FriBiDi, make sure that you install them before installing libraqmif not available as package in your system.

    • setting text direction or font features is not supported withoutlibraqm.

    • libraqm is dynamically loaded in Pillow 5.0.0 and above, so supportis available if all the libraries are installed.

    • Windows support: Raqm is not included in prebuilt wheels

  • libxcb provides X11 screengrab support.

Once you have installed the prerequisites, run:

If the prerequisites are installed in the standard library locationsfor your machine (e.g. /usr or /usr/local), noadditional configuration should be required. If they are installed ina non-standard location, you may need to configure setuptools to usethose locations by editing setup.py orsetup.cfg, or by adding environment variables on the commandline:

If Pillow has been previously built without the requiredprerequisites, it may be necessary to manually clear the pip cache orbuild without cache using the --no-cache-dir option to force abuild with newly installed external libraries.

Build Options¶

  • Environment variable: MAX_CONCURRENCY=n. Pillow can usemultiprocessing to build the extension. Setting MAX_CONCURRENCYsets the number of CPUs to use, or can disable parallel building byusing a setting of 1. By default, it uses 4 CPUs, or if 4 are notavailable, as many as are present.

  • Build flags: --disable-zlib, --disable-jpeg,--disable-tiff, --disable-freetype, --disable-lcms,--disable-webp, --disable-webpmux, --disable-jpeg2000,--disable-imagequant, --disable-xcb.Disable building the corresponding feature even if the developmentlibraries are present on the building machine.

  • Build flags: --enable-zlib, --enable-jpeg,--enable-tiff, --enable-freetype, --enable-lcms,--enable-webp, --enable-webpmux, --enable-jpeg2000,--enable-imagequant, --enable-xcb.Require that the corresponding feature is built. The build will raisean exception if the libraries are not found. Webpmux (WebP metadata)relies on WebP support. Tcl and Tk also must be used together.

  • Build flag: --disable-platform-guessing. Skips all of theplatform dependent guessing of include and library directories forautomated build systems that configure the proper paths in theenvironment variables (e.g. Buildroot).

  • Build flag: --debug. Adds a debugging flag to the include andlibrary search process to dump all paths searched for and found tostdout.

Sample usage:

or using pip:

Building on macOS¶

The Xcode command line tools are required to compile portions ofPillow. The tools are installed by running xcode-select--installfrom the command line. The command line tools are required even if youhave the full Xcode package installed. It may be necessary to runsudoxcodebuild-license to accept the license prior to using thetools.

The easiest way to install external libraries is via Homebrew. After you install Homebrew, run:

To install libraqm on macOS use Homebrew to install its dependencies:

Then see depends/install_raqm_cmake.sh to install libraqm.

Now install Pillow with:

or from within the uncompressed source directory:

Building on Windows¶

We recommend you use prebuilt wheels from PyPI.If you wish to compile Pillow manually, you can use the build scriptsin the winbuild directory used for CI testing and development.These scripts require Visual Studio 2017 or newer and NASM.

Building on Windows using MSYS2/MinGW¶

To build Pillow using MSYS2, make sure you run the MSYS2 MinGW 32-bit orMSYS2 MinGW 64-bit console, notMSYS2 directly.

The following instructions target the 64-bit build, for 32-bitreplace all occurrences of mingw-w64-x86_64- with mingw-w64-i686-.

Make sure you have Python and GCC installed:

Prerequisites are installed on MSYS2 MinGW 64-bit with:

Now install Pillow with:

Building on FreeBSD¶

Make sure you have Python’s development libraries installed:

Prerequisites are installed on FreeBSD 10 or 11 with:

Then see depends/install_raqm_cmake.sh to install libraqm.

Building on Linux¶

If you didn’t build Python from source, make sure you have Python’sdevelopment libraries installed.

In Debian or Ubuntu:

In Fedora, the command is:

In Alpine, the command is:

Note

redhat-rpm-config is required on Fedora 23, but not earlier versions.

Prerequisites for Ubuntu 16.04 LTS - 20.04 LTS are installed with:

Then see depends/install_raqm.sh to install libraqm.

Prerequisites are installed on recent Red Hat, CentOS or Fedora with:

Note that the package manager may be yum or DNF, depending on theexact distribution.

Prerequisites are installed for Alpine with:

See also the Dockerfiles in the Test Infrastructure repo(https://github.com/python-pillow/docker-images) for a known workinginstall process for other tested distros.

Building on Android¶

Basic Android support has been added for compilation within the Termuxenvironment. The dependencies can be installed by:

This has been tested within the Termux app on ChromeOS, on x86.

Platform Support¶

Current platform support for Pillow. Binary distributions arecontributed for each release on a volunteer basis, but the sourceshould compile and run everywhere platform support is listed. Ingeneral, we aim to support all current versions of Linux, macOS, andWindows.

Continuous Integration Targets¶

These platforms are built and tested for every change.

Operating system

Tested Python versions

Tested architecture

Alpine

3.8

x86-64

Arch

3.8

x86-64

Amazon Linux 2

3.7

x86-64

CentOS 7

3.6

x86-64

CentOS 8

3.6

x86-64

Debian 10 Buster

3.7

x86

Fedora 32

3.8

x86-64

Fedora 33

3.9

x86-64

macOS 10.15 Catalina

3.6, 3.7, 3.8, 3.9, PyPy3

x86-64

Ubuntu Linux 16.04 LTS (Xenial)

3.6, 3.7, 3.8, 3.9, PyPy3

x86-64

Ubuntu Linux 18.04 LTS (Bionic)

3.6, 3.7, 3.8, 3.9, PyPy3

x86-64

Ubuntu Linux 20.04 LTS (Focal)

3.8

x86-64

Windows Server 2016

3.6

x86-64

Windows Server 2019

3.6, 3.7, 3.8, 3.9

x86, x86-64

PyPy3

x86

3.8/MinGW

x86, x86-64

Other Platforms¶

These platforms have been reported to work at the versions mentioned.

Note

Contributors please test Pillow on your platform then update thisdocument and send a pull request.

Operating system

Tested Python versions

Latest tested Pillow version

Tested processors

macOS 11.0 Big Sur

3.8, 3.9

8.1.2

arm

3.6, 3.7, 3.8, 3.9

8.1.2

x86-64

macOS 10.15 Catalina

3.6, 3.7, 3.8, 3.9

8.0.1

x86-64

3.5

7.2.0

macOS 10.14 Mojave

3.5, 3.6, 3.7, 3.8

7.2.0

x86-64

2.7

6.0.0

3.4

5.4.1

macOS 10.13 High Sierra

2.7, 3.4, 3.5, 3.6

4.2.1

x86-64

macOS 10.12 Sierra

2.7, 3.4, 3.5, 3.6

4.1.1

x86-64

Mac OS X 10.11 El Capitan

2.7, 3.4, 3.5, 3.6, 3.7

5.4.1

x86-64

3.3

4.1.0

Mac OS X 10.9 Mavericks

2.7, 3.2, 3.3, 3.4

3.0.0

x86-64

Mac OS X 10.8 Mountain Lion

2.6, 2.7, 3.2, 3.3

x86-64

Redhat Linux 6

2.6

x86

CentOS 6.3

2.7, 3.3

x86

Fedora 23

2.7, 3.4

3.1.0

x86-64

Ubuntu Linux 12.04 LTS (Precise)

2.6, 3.2, 3.3, 3.4, 3.5PyPy5.3.1, PyPy3 v2.4.0

3.4.1

x86,x86-64

2.7

4.3.0

x86-64

2.7, 3.2

3.4.1

ppc

Ubuntu Linux 10.04 LTS (Lucid)

2.6

2.3.0

x86,x86-64

Debian 8.2 Jessie

2.7, 3.4

3.1.0

x86-64

Raspbian Jessie

2.7, 3.4

3.1.0

arm

Raspbian Stretch

2.7, 3.5

4.0.0

arm

Gentoo Linux

2.7, 3.2

2.1.0

x86-64

FreeBSD 11.1

2.7, 3.4, 3.5, 3.6

4.3.0

x86-64

FreeBSD 10.3

2.7, 3.4, 3.5

4.2.0

x86-64

FreeBSD 10.2

2.7, 3.4

3.1.0

x86-64

Windows 10

3.7

7.1.0

x86-64

Windows 8.1 Pro

2.6, 2.7, 3.2, 3.3, 3.4

2.4.0

x86,x86-64

Windows 8 Pro

2.6, 2.7, 3.2, 3.3, 3.4a3

2.2.0

x86,x86-64

Windows 7 Professional

3.7

7.0.0

x86,x86-64

Windows Server 2008 R2 Enterprise

3.3

x86-64

Old Versions¶

Docker

You can download old distributions from the release history at PyPI and by direct URL accesseg. https://pypi.org/project/Pillow/1.0/.