subdirectory. By default, the subdirectory is named the same as the package,
and without the ``-ExcludeVersion`` option this name will include the specific
version installed. Inside the subdirectory is a ``tools`` directory that
-contains the Python installation::
+contains the Python installation:
+
+.. code-block:: doscon
# Without -ExcludeVersion
> .\python.3.5.2\tools\python.exe -V
.. note::
The embedded distribution does not include the `Microsoft C Runtime
- <https://www.microsoft.com/en-us/download/details.aspx?id=48145>`_ and it is
+ <https://docs.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist#visual-studio-2015-2017-2019-and-2022>`_ and it is
the responsibility of the application installer to provide this. The
runtime may have already been installed on a user's system previously or
automatically via Windows Update, and can be detected by finding
Windows will concatenate User variables *after* System variables, which may
cause unexpected results when modifying :envvar:`PATH`.
- The :envvar:`PYTHONPATH` variable is used by all versions of Python 2 and
- Python 3, so you should not permanently configure this variable unless it
- only includes code that is compatible with all of your installed Python
+ The :envvar:`PYTHONPATH` variable is used by all versions of Python,
+ so you should not permanently configure it unless the listed paths
+ only include code that is compatible with all of your installed Python
versions.
.. seealso::
- https://www.microsoft.com/en-us/wdsi/help/folder-variables
- Environment variables in Windows NT
-
- https://technet.microsoft.com/en-us/library/cc754250.aspx
- The SET command, for temporarily modifying environment variables
+ https://docs.microsoft.com/en-us/windows/win32/procthread/environment-variables
+ Overview of environment variables on Windows
- https://technet.microsoft.com/en-us/library/cc755104.aspx
- The SETX command, for permanently modifying environment variables
+ https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/set_1
+ The ``set`` command, for temporarily modifying environment variables
- https://support.microsoft.com/en-us/help/310519/how-to-manage-environment-variables-in-windows-xp
- How To Manage Environment Variables in Windows XP
+ https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/setx
+ The ``setx`` command, for permanently modifying environment variables
- https://www.chem.gla.ac.uk/~louis/software/faq/q1.html
- Setting Environment variables, Louis J. Farrugia
.. _windows-path-mod:
System-wide installations of Python 3.3 and later will put the launcher on your
:envvar:`PATH`. The launcher is compatible with all available versions of
Python, so it does not matter which version is installed. To check that the
-launcher is available, execute the following command in Command Prompt:
-
-::
+launcher is available, execute the following command in Command Prompt::
py
started - it can be exited as normal, and any additional command-line
arguments specified will be sent directly to Python.
-If you have multiple versions of Python installed (e.g., 2.7 and |version|) you
-will have noticed that Python |version| was started - to launch Python 2.7, try
-the command:
-
-::
-
- py -2.7
+If you have multiple versions of Python installed (e.g., 3.7 and |version|) you
+will have noticed that Python |version| was started - to launch Python 3.7, try
+the command::
-If you want the latest version of Python 2.x you have installed, try the
-command:
+ py -3.7
-::
+If you want the latest version of Python 2 you have installed, try the
+command::
py -2
-You should find the latest version of Python 2.x starts.
+You should find the latest version of Python 3.x starts.
-If you see the following error, you do not have the launcher installed:
-
-::
+If you see the following error, you do not have the launcher installed::
'py' is not recognized as an internal or external command,
operable program or batch file.
Per-user installations of Python do not add the launcher to :envvar:`PATH`
unless the option was selected on installation.
-::
+The command::
py --list
-You should see the currently installed versions of Python.
+displays the currently installed version(s) of Python.
Virtual environments
^^^^^^^^^^^^^^^^^^^^
import sys
sys.stdout.write("hello from Python %s\n" % (sys.version,))
-From the directory in which hello.py lives, execute the command:
-
-::
+From the directory in which hello.py lives, execute the command::
py hello.py
Re-executing the command should now print the latest Python 3.x information.
As with the above command-line examples, you can specify a more explicit
-version qualifier. Assuming you have Python 2.6 installed, try changing the
-first line to ``#! python2.6`` and you should find the 2.6 version
-information printed.
+version qualifier. Assuming you have Python 3.7 installed, try changing
+the first line to ``#! python3.7`` and you should find the |version|
+version information printed.
Note that unlike interactive use, a bare "python" will use the latest
version of Python 2.x that you have installed. This is for backward
Any of the above virtual commands can be suffixed with an explicit version
(either just the major version, or the major and minor version).
Furthermore the 32-bit version can be requested by adding "-32" after the
-minor version. I.e. ``/usr/bin/python2.7-32`` will request usage of the
-32-bit python 2.7.
+minor version. I.e. ``/usr/bin/python3.7-32`` will request usage of the
+32-bit python 3.7.
.. versionadded:: 3.7
``python2`` will use the latest Python 2.x version installed and
the command ``python3`` will use the latest Python 3.x installed.
-* The commands ``python3.1`` and ``python2.7`` will not consult any
+* The command ``python3.7`` will not consult any
options at all as the versions are fully specified.
* If ``PY_PYTHON=3``, the commands ``python`` and ``python3`` will both use
the latest installed Python 3 version.
-* If ``PY_PYTHON=3.1-32``, the command ``python`` will use the 32-bit
- implementation of 3.1 whereas the command ``python3`` will use the latest
+* If ``PY_PYTHON=3.7-32``, the command ``python`` will use the 32-bit
+ implementation of 3.7 whereas the command ``python3`` will use the latest
installed Python (PY_PYTHON was not considered at all as a major
version was specified.)
-* If ``PY_PYTHON=3`` and ``PY_PYTHON3=3.1``, the commands
- ``python`` and ``python3`` will both use specifically 3.1
+* If ``PY_PYTHON=3`` and ``PY_PYTHON3=3.7``, the commands
+ ``python`` and ``python3`` will both use specifically 3.7
In addition to environment variables, the same settings can be configured
in the .INI file used by the launcher. The section in the INI file is
For example:
-* Setting ``PY_PYTHON=3.1`` is equivalent to the INI file containing:
+* Setting ``PY_PYTHON=3.7`` is equivalent to the INI file containing:
.. code-block:: ini
[defaults]
- python=3.1
+ python=3.7
-* Setting ``PY_PYTHON=3`` and ``PY_PYTHON3=3.1`` is equivalent to the INI file
+* Setting ``PY_PYTHON=3`` and ``PY_PYTHON3=3.7`` is equivalent to the INI file
containing:
.. code-block:: ini
[defaults]
python=3
- python3=3.1
+ python3=3.7
Diagnostics
-----------
utilities for:
* `Component Object Model
- <https://docs.microsoft.com/en-us/windows/desktop/com/component-object-model--com--portal>`_
+ <https://docs.microsoft.com/en-us/windows/win32/com/component-object-model--com--portal>`_
(COM)
* Win32 API calls
* Registry
* Event log
-* `Microsoft Foundation Classes <https://msdn.microsoft.com/en-us/library/fe1cf721%28VS.80%29.aspx>`_ (MFC)
- user interfaces
+* `Microsoft Foundation Classes
+ <https://docs.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications>`_
+ (MFC) user interfaces
`PythonWin <https://web.archive.org/web/20060524042422/
https://www.python.org/windows/pythonwin/>`_ is a sample MFC application
`Win32 How Do I...? <http://timgolden.me.uk/python/win32_how_do_i.html>`_
by Tim Golden
- `Python and COM <http://www.boddie.org.uk/python/COM.html>`_
+ `Python and COM <https://www.boddie.org.uk/python/COM.html>`_
by David and Paul Boddie
Python.
-WConio
-------
-
-Since Python's advanced terminal handling layer, :mod:`curses`, is restricted to
-Unix-like systems, there is a library exclusive to Windows as well: Windows
-Console I/O for Python.
-
-`WConio <http://newcenturycomputers.net/projects/wconio.html>`_ is a wrapper for
-Turbo-C's :file:`CONIO.H`, used to create text user interfaces.
-
-
-
Compiling Python on Windows
===========================
<https://devguide.python.org/setup/#getting-the-source-code>`_.
The source tree contains a build solution and project files for Microsoft
-Visual Studio 2015, which is the compiler used to build the official Python
+Visual Studio, which is the compiler used to build the official Python
releases. These files are in the :file:`PCbuild` directory.
Check :file:`PCbuild/readme.txt` for general information on the build process.
-
For extension modules, consult :ref:`building-on-windows`.
-.. seealso::
-
- `Python + Windows + distutils + SWIG + gcc MinGW <http://sebsauvage.net/python/mingw.html>`_
- or "Creating Python extensions in C/C++ with SWIG and compiling them with
- MinGW gcc under Windows" or "Installing Python extension with distutils
- and without Microsoft Visual C++" by Sébastien Sauvage, 2003
-
Other Platforms
===============
earlier are no longer supported (due to the lack of users or developers).
Check :pep:`11` for details on all unsupported platforms.
-* `Windows CE <http://pythonce.sourceforge.net/>`_ is still supported.
-* The `Cygwin <https://cygwin.com/>`_ installer offers to install the Python
- interpreter as well (cf. `Cygwin package source
- <ftp://ftp.uni-erlangen.de/pub/pc/gnuwin32/cygwin/mirrors/cygnus/
- release/python>`_, `Maintainer releases
- <http://www.tishler.net/jason/software/python/>`_)
+* `Windows CE <http://pythonce.sourceforge.net/>`_ is
+ `no longer supported <https://github.com/python/cpython/issues/71542>`__
+ since Python 3 (if it ever was).
+* The `Cygwin <https://cygwin.com/>`_ installer offers to install the
+ `Python interpreter <https://cygwin.com/packages/summary/python3.html>`__
+ as well
See `Python for Windows <https://www.python.org/downloads/windows/>`_
for detailed information about platforms with pre-compiled installers.
Building Python using Microsoft Visual C++
------------------------------------------
-This directory is used to build CPython for Microsoft Windows NT version
-6.0 or higher (Windows Vista, Windows Server 2008, or later) on 32 and 64
+This directory is used to build CPython for Microsoft Windows on 32- and 64-
bit platforms. Using this directory requires an installation of
-Microsoft Visual Studio 2017 (MSVC 14.1) with the *Python workload* and
-its optional *Python native development* component selected. (For
-command-line builds, Visual Studio 2015 may also be used.)
+Microsoft Visual Studio (MSVC) with the *Python workload* and
+its optional *Python native development* component selected.
Building from the command line is recommended in order to obtain any
external dependencies. To build, simply run the "build.bat" script without
Prompt window
pylauncher
py.exe, the Python Launcher for Windows, see
- http://docs.python.org/3/using/windows.html#launcher
+ https://docs.python.org/3/using/windows.html#launcher
pywlauncher
pyw.exe, a variant of py.exe that doesn't open a Command Prompt
window
_lzma
Python wrapper for version 5.2.2 of the liblzma compression library
Homepage:
- http://tukaani.org/xz/
+ https://tukaani.org/xz/
_ssl
Python wrapper for version 1.1.1k of the OpenSSL secure sockets
library, which is downloaded from our binaries repository at
https://github.com/python/cpython-bin-deps.
Homepage:
- http://www.openssl.org/
+ https://www.openssl.org/
Building OpenSSL requires Perl on your path, and can be performed by
running PCbuild\prepare_ssl.bat. This will retrieve the version of
_sqlite3
Wraps SQLite 3.37.2, which is itself built by sqlite3.vcxproj
Homepage:
- http://www.sqlite.org/
+ https://www.sqlite.org/
_tkinter
Wraps version 8.6.6 of the Tk windowing system, which is downloaded
from our binaries repository at
https://github.com/python/cpython-bin-deps.
Homepage:
- http://www.tcl.tk/
+ https://www.tcl.tk/
Building Tcl and Tk can be performed by running
PCbuild\prepare_tcltk.bat. This will retrieve the version of the
PGI python, and finally creates the optimized files.
See
- http://msdn.microsoft.com/en-us/library/e7k32f4k(VS.140).aspx
+ https://docs.microsoft.com/en-us/cpp/build/profile-guided-optimizations
for more on this topic.