After this PEP was initially drafted, PEP 508 was developed and submitted to
fully specify the dependency declaration syntax, including environment markers.
Accordingly, this PEP has been marked as Superseded.

An environment marker describes a condition about the current execution
environment. They are used to indicate when certain dependencies are only
required in particular environments, and to indicate supported platforms
for distributions with additional constraints beyond the availability of a
Python runtime.

Environment markers were first specified in PEP-0345[1]. PEP-0426[2] (which
would replace PEP-0345) proposed extensions to the markers. When
2.7.10 was released, even these extensions became insufficient due to
their reliance on simple lexical comparisons, and thus this PEP has
been born.

For many packages this means they aim to support a wide range of
Python releases. If they depend on libraries such as argparse -
which started as external libraries, but later got incorporated into
core - specifying a single set of requirements is difficult, as the
set of required packages differs depending on the version of Python in
use.

For other packages, designing for portability means supporting
multiple operating systems. However, the significant differences
between them may mean that particular dependencies are only needed on
particular platforms (relying on pywin32 only on Windows, for
example)"

Environment Markers attempt to provide more flexibility in a list of
requirements by allowing the developer to list requirements that are
specific to a particular environment.