|
Expand Up
|
@@ -13,11 +13,8 @@ Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, |
|
|
2012, 2013, 2014, 2015, 2016, 2017 Python Software Foundation. All rights |
|
|
reserved. |
|
|
|
|
|
Python 3.x is a new version of the language, which is incompatible with the |
|
|
2.x line of releases. The language is mostly the same, but many details, |
|
|
especially how built-in objects like dictionaries and strings work, |
|
|
have changed considerably, and a lot of deprecated features have finally |
|
|
been removed. |
|
|
See the end of this file for further copyright and license information. |
|
|
|
|
|
|
|
|
Using Python |
|
|
------------ |
|
Expand All
|
@@ -40,16 +37,17 @@ On Unix, Linux, BSD, OSX, and Cygwin:: |
|
|
|
|
|
This will install Python as python3. |
|
|
|
|
|
You can pass many options to the configure script; run ``./configure --help`` to |
|
|
find out more. On OSX and Cygwin, the executable is called ``python.exe``; |
|
|
You can pass many options to the configure script; run ``./configure --help`` |
|
|
to find out more. On OSX and Cygwin, the executable is called ``python.exe``; |
|
|
elsewhere it's just ``python``. |
|
|
|
|
|
On Mac OS X, if you have configured Python with ``--enable-framework``, you should |
|
|
use ``make frameworkinstall`` to do the installation. Note that this installs the |
|
|
Python executable in a place that is not normally on your PATH, you may want to |
|
|
set up a symlink in ``/usr/local/bin``. |
|
|
On Mac OS X, if you have configured Python with ``--enable-framework``, you |
|
|
should use ``make frameworkinstall`` to do the installation. Note that this |
|
|
installs the Python executable in a place that is not normally on your PATH, |
|
|
you may want to set up a symlink in ``/usr/local/bin``. |
|
|
|
|
|
On Windows, see PCbuild/readme.txt. |
|
|
On Windows, see `PCbuild/readme.txt |
|
|
<https://github.com/python/cpython/blob/master/PCbuild/readme.txt>`_. |
|
|
|
|
|
If you wish, you can create a subdirectory and invoke configure from there. |
|
|
For example:: |
|
Expand All
|
@@ -60,57 +58,58 @@ For example:: |
|
|
make |
|
|
make test |
|
|
|
|
|
(This will fail if you *also* built at the top-level directory. |
|
|
You should do a ``make clean`` at the toplevel first.) |
|
|
(This will fail if you *also* built at the top-level directory. You should do |
|
|
a ``make clean`` at the toplevel first.) |
|
|
|
|
|
To get an optimized build of Python, ``configure --enable-optimizations`` before |
|
|
you run ``make``. This sets the default make targets up to enable Profile Guided |
|
|
Optimization (PGO) and may be used to auto-enable Link Time Optimization (LTO) |
|
|
on some platforms. For more details, see the sections bellow. |
|
|
To get an optimized build of Python, ``configure --enable-optimizations`` |
|
|
before you run ``make``. This sets the default make targets up to enable |
|
|
Profile Guided Optimization (PGO) and may be used to auto-enable Link Time |
|
|
Optimization (LTO) on some platforms. For more details, see the sections |
|
|
below. |
|
|
|
|
|
|
|
|
Profile Guided Optimization |
|
|
--------------------------- |
|
|
|
|
|
PGO takes advantage of recent versions of the GCC or Clang compilers. |
|
|
If ran, ``make profile-opt`` will do several steps. |
|
|
PGO takes advantage of recent versions of the GCC or Clang compilers. If ran, |
|
|
``make profile-opt`` will do several steps. |
|
|
|
|
|
First, the entire Python directory is cleaned of temporary files that |
|
|
may have resulted in a previous compilation. |
|
|
First, the entire Python directory is cleaned of temporary files that may have |
|
|
resulted in a previous compilation. |
|
|
|
|
|
Then, an instrumented version of the interpreter is built, using suitable |
|
|
compiler flags for each flavour. Note that this is just an intermediary |
|
|
step and the binary resulted after this step is not good for real life |
|
|
workloads, as it has profiling instructions embedded inside. |
|
|
compiler flags for each flavour. Note that this is just an intermediary step |
|
|
and the binary resulted after this step is not good for real life workloads, as |
|
|
it has profiling instructions embedded inside. |
|
|
|
|
|
After this instrumented version of the interpreter is built, the Makefile |
|
|
will automatically run a training workload. This is necessary in order to |
|
|
profile the interpreter execution. Note also that any output, both stdout |
|
|
and stderr, that may appear at this step is suppressed. |
|
|
After this instrumented version of the interpreter is built, the Makefile will |
|
|
automatically run a training workload. This is necessary in order to profile |
|
|
the interpreter execution. Note also that any output, both stdout and stderr, |
|
|
that may appear at this step is suppressed. |
|
|
|
|
|
Finally, the last step is to rebuild the interpreter, using the information |
|
|
collected in the previous one. The end result will be a Python binary |
|
|
that is optimized and suitable for distribution or production installation. |
|
|
collected in the previous one. The end result will be a Python binary that is |
|
|
optimized and suitable for distribution or production installation. |
|
|
|
|
|
|
|
|
Link Time Optimization |
|
|
---------------------- |
|
|
|
|
|
Enabled via configure's ``--with-lto`` flag. LTO takes advantages of recent |
|
|
compiler toolchains ability to optimize across the otherwise arbitrary ``.o`` file |
|
|
boundary when building final executables or shared libraries for additional |
|
|
performance gains. |
|
|
Enabled via configure's ``--with-lto`` flag. LTO takes advantage of the |
|
|
ability of recent compiler toolchains to optimize across the otherwise |
|
|
arbitrary ``.o`` file boundary when building final executables or shared |
|
|
libraries for additional performance gains. |
|
|
|
|
|
|
|
|
What's New |
|
|
---------- |
|
|
|
|
|
We have a comprehensive overview of the changes in the `What's New in |
|
|
Python 3.7 <https://docs.python.org/3.7/whatsnew/3.7.html>`_ document. |
|
|
|
|
|
For a more detailed change log, read Misc/NEWS (though this file, too, |
|
|
is incomplete, and also doesn't list anything merged in from the 2.7 |
|
|
release under development). |
|
|
We have a comprehensive overview of the changes in the `What's New in Python |
|
|
3.7 <https://docs.python.org/3.7/whatsnew/3.7.html>`_ document. For a more |
|
|
detailed change log, read `Misc/NEWS |
|
|
<https://github.com/python/cpython/blob/master/Misc/NEWS>`_, but a full |
|
|
accounting of changes can only be gleaned from the `commit history |
|
|
<https://github.com/python/cpython/commits/master>`_. |
|
|
|
|
|
If you want to install multiple versions of Python see the section below |
|
|
entitled "Installing multiple versions". |
|
Expand All
|
@@ -128,61 +127,56 @@ is primarily for documentation authors, translators, and people with special |
|
|
formatting requirements. |
|
|
|
|
|
If you would like to contribute to the development of Python, relevant |
|
|
documentation is available at: `Python Developer's Guide |
|
|
documentation is available in the `Python Developer's Guide |
|
|
<https://docs.python.org/devguide/>`_. |
|
|
|
|
|
For information about building Python's documentation, refer to Doc/README.txt. |
|
|
For information about building Python's documentation, refer to `Doc/README.txt |
|
|
<https://github.com/python/cpython/blob/master/Doc/README.txt>`_. |
|
|
|
|
|
|
|
|
Converting From Python 2.x to 3.x |
|
|
--------------------------------- |
|
|
|
|
|
Python starting with 2.6 contains features to help locating code that needs to |
|
|
be changed, such as optional warnings when deprecated features are used, and |
|
|
backported versions of certain key Python 3.x features. |
|
|
|
|
|
A source-to-source translation tool, ``2to3``, can take care of the mundane task |
|
|
of converting large amounts of source code. It is not a complete solution but |
|
|
is complemented by the deprecation warnings in 2.6. See |
|
|
`2to3 documentation <https://docs.python.org/3.7/library/2to3.html>`_ for more |
|
|
information. |
|
|
Significant backward incompatible changes were made for the release of Python |
|
|
3.0, which may cause programs written for Python 2 to fail when run with Python |
|
|
3. For more information about porting your code from Python 2 to Python 3, see |
|
|
the `Porting HOWTO <https://docs.python.org/3/howto/pyporting.html>`_. |
|
|
|
|
|
|
|
|
Testing |
|
|
------- |
|
|
|
|
|
To test the interpreter, type ``make test`` in the top-level directory. |
|
|
The test set produces some output. You can generally ignore the messages |
|
|
about skipped tests due to optional features which can't be imported. |
|
|
If a message is printed about a failed test or a traceback or core dump |
|
|
is produced, something is wrong. |
|
|
To test the interpreter, type ``make test`` in the top-level directory. The |
|
|
test set produces some output. You can generally ignore the messages about |
|
|
skipped tests due to optional features which can't be imported. If a message |
|
|
is printed about a failed test or a traceback or core dump is produced, |
|
|
something is wrong. |
|
|
|
|
|
By default, tests are prevented from overusing resources like disk space and |
|
|
memory. To enable these tests, run ``make testall``. |
|
|
|
|
|
IMPORTANT: If the tests fail and you decide to mail a bug report, *don't* |
|
|
include the output of ``make test``. It is useless. Run the failing test |
|
|
manually, as follows:: |
|
|
If any tests fail, you can re-run the failing test(s) in verbose mode:: |
|
|
|
|
|
./python -m test -v test_whatever |
|
|
make test TESTOPTS="-v test_that_failed" |
|
|
|
|
|
(substituting the top of the source tree for '.' if you built in a different |
|
|
directory). This runs the test in verbose mode. |
|
|
If the failure persists and appears to be a problem with Python rather than |
|
|
your environment, you can `file a bug report <https://bugs.python.org>`_ and |
|
|
include relevant output from that command to show the issue. |
|
|
|
|
|
|
|
|
Installing multiple versions |
|
|
---------------------------- |
|
|
|
|
|
On Unix and Mac systems if you intend to install multiple versions of Python |
|
|
using the same installation prefix (``--prefix`` argument to the configure script) |
|
|
you must take care that your primary python executable is not overwritten by the |
|
|
installation of a different version. All files and directories installed using |
|
|
``make altinstall`` contain the major and minor version and can thus live |
|
|
side-by-side. ``make install`` also creates ``${prefix}/bin/python3`` which refers to |
|
|
``${prefix}/bin/pythonX.Y``. If you intend to install multiple versions using the |
|
|
same prefix you must decide which version (if any) is your "primary" version. |
|
|
Install that version using ``make install``. Install all other versions using |
|
|
``make altinstall``. |
|
|
using the same installation prefix (``--prefix`` argument to the configure |
|
|
script) you must take care that your primary python executable is not |
|
|
overwritten by the installation of a different version. All files and |
|
|
directories installed using ``make altinstall`` contain the major and minor |
|
|
version and can thus live side-by-side. ``make install`` also creates |
|
|
``${prefix}/bin/python3`` which refers to ``${prefix}/bin/pythonX.Y``. If you |
|
|
intend to install multiple versions using the same prefix you must decide which |
|
|
version (if any) is your "primary" version. Install that version using ``make |
|
|
install``. Install all other versions using ``make altinstall``. |
|
|
|
|
|
For example, if you want to install Python 2.7, 3.6, and 3.7 with 3.7 being the |
|
|
primary version, you would execute ``make install`` in your 3.7 build directory |
|
Expand All
|
@@ -192,26 +186,26 @@ and ``make altinstall`` in the others. |
|
|
Issue Tracker and Mailing List |
|
|
------------------------------ |
|
|
|
|
|
We're soliciting bug reports about all aspects of the language. Fixes are also |
|
|
welcome, preferably in unified diff format. Please use the issue tracker: |
|
|
`bugs.python.org <https://bugs.python.org/>`_. |
|
|
Bug reports are welcome! You can use the `issue tracker |
|
|
<https://bugs.python.org>`_ to report bugs, and/or submit pull requests `on |
|
|
GitHub <https://github.com/python/cpython>`_. |
|
|
|
|
|
If you're not sure whether you're dealing with a bug or a feature, use the |
|
|
mailing list: [email protected]. To subscribe to the list, use the mailman |
|
|
form: `python-dev <https://mail.python.org/mailman/listinfo/python-dev/>`_ |
|
|
You can also follow development discussion on the `python-dev mailing list |
|
|
<https://mail.python.org/mailman/listinfo/python-dev/>`_. |
|
|
|
|
|
|
|
|
Proposals for enhancement |
|
|
------------------------- |
|
|
|
|
|
If you have a proposal to change Python, you may want to send an email to the |
|
|
comp.lang.python or `python-ideas`_ mailing lists for initial feedback. A Python |
|
|
Enhancement Proposal (PEP) may be submitted if your idea gains ground. All |
|
|
current PEPs, as well as guidelines for submitting a new PEP, are listed at |
|
|
comp.lang.python or `python-ideas`_ mailing lists for initial feedback. A |
|
|
Python Enhancement Proposal (PEP) may be submitted if your idea gains ground. |
|
|
All current PEPs, as well as guidelines for submitting a new PEP, are listed at |
|
|
`python.org/dev/peps/ <https://www.python.org/dev/peps/>`_. |
|
|
|
|
|
.. _python-ideas: https://mail.python.org/mailman/listinfo/python-ideas/ |
|
|
|
|
|
|
|
|
Release Schedule |
|
|
---------------- |
|
|
|
|
Expand All
|
@@ -231,8 +225,8 @@ rights reserved. |
|
|
|
|
|
Copyright (c) 1991-1995 Stichting Mathematisch Centrum. All rights reserved. |
|
|
|
|
|
See the file "LICENSE" for information on the history of this software, |
|
|
terms & conditions for usage, and a DISCLAIMER OF ALL WARRANTIES. |
|
|
See the file "LICENSE" for information on the history of this software, terms & |
|
|
conditions for usage, and a DISCLAIMER OF ALL WARRANTIES. |
|
|
|
|
|
This Python distribution contains *no* GNU General Public License (GPL) code, |
|
|
so it may be used in proprietary projects. There are interfaces to some GNU |
|
Expand Down
|
|