Skip to content
Snippets Groups Projects
download.html 34 KiB
Newer Older
<!DOCTYPE html>
<html>
<head>
	<title>PyPy - Download and install</title>
	<meta http-equiv="content-language" content="en" />
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<meta name="author" content="PyPy Team" />
	<meta name="description" content="PyPy" />
	<meta name="copyright" content="MIT" />
	<meta name="document-rating" content="general" />
	<link rel="stylesheet" type="text/css" media="screen" title="default" href="css/site.css" />
	<link rel="alternate" type="application/rss+xml" title="RSS Feed for PyPy" href="http://feeds.feedburner.com/PyPyStatusBlog" />
  <link rel="stylesheet" type="text/css" href="css/jquery-ui-1.8.14.custom.css" />
	<script type="text/javascript" src="https://use.typekit.com/hdt8sni.js"></script>
	<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
	<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script type="text/javascript" src="js/jquery-ui-1.8.14.custom.min.js"></script>
  <script type="text/javascript" src="js/script2.js?bust=1"></script>
</head>
<body>
<script type="text/javascript">
	var _gaq = [['_setAccount', 'UA-7778406-3'], ['_trackPageview']];
	if (document.location.protocol !== 'file:') {
		(function() {
			var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
			ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
			(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga);
		})();
	}
</script>
<div id="body-outer"><div id="body-inner"><div id="body" class="clearfix">
<div id="header">
    <div id="menu-follow">
    <div><a href="https://bitbucket.org/pypy/pypy"><img src="https://www.selenic.com/hg-logo/logo-droplets-25.png" width="14px" height="14px" /></a></div>
		<div><a href="http://feeds.feedburner.com/PyPyStatusBlog" title="Subscribe to the RSS Feed"><img src="https://feedburner.google.com/fb/lib/images/icons/feed-icon-12x12-orange.gif" alt="Subscribe to the RSS Feed" width="14px" height="14px" /></a></div>
Armin Rigo's avatar
Armin Rigo committed
      <div><a href="http://flattr.com/thing/1191749/PyPy" target="_blank">
      <img src="https://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a></div>
	<div id="logo"><a href="http://pypy.org"><img src="image/pypy-logo.png" alt="PyPy" height="110px" /></a></div>
	<hr class="clear-left" />
    <div id="menu-sub">
      <a href="index.html">Home</a>
        <span class="menu-sub-sep"> | </span>
      <a href="features.html">What is PyPy?</a>
        <span class="menu-sub-sep"> | </span>
      <a href="download.html">Download</a>
        <span class="menu-sub-sep"> | </span>
      <a href="compat.html">Compatibility</a>
        <span class="menu-sub-sep"> | </span>
      <a href="performance.html">Performance</a>
        <span class="menu-sub-sep"> | </span>
      <a href="http://doc.pypy.org">Dev Documentation</a>
        <span class="menu-sub-sep"> | </span>
      <a href="http://morepypy.blogspot.com">Blog</a>
        <span class="menu-sub-sep"> | </span>
      <a href="https://bitbucket.org/pypy/pypy/issues?status=new&amp;status=open">Bug/Issues</a>
        <span class="menu-sub-sep"> | </span>
      <a href="people.html">People</a>
        <span class="menu-sub-sep"> | </span>
      <a href="contact.html">Contact</a>
        <br />
      <a href="py3donate.html">Py3k donations</a>
        <span class="menu-sub-sep"> | </span>
      <a href="numpydonate.html">NumPy donations</a>
        <span class="menu-sub-sep"> | </span>
      <a href="tmdonate2.html">STM donations</a>
    </div>
	<hr class="clear" />
</div>
<div id="content">
<div>
<div id="main">
<h1 class="title">Download and install</h1>
<p class="download-menu">There are <a class="reference external" href="http://buildbot.pypy.org/nightly/trunk/">nightly binary builds</a> available. Those builds are not always
as stable as the release, but they contain numerous bugfixes and
Matti Picus's avatar
Matti Picus committed
performance improvements.</p>
<p>We provide binaries for x86, ARM, PPC and s390x running on different operating systems such as
Linux, Mac OS/X and Windows:</p>
Matti Picus's avatar
Matti Picus committed
<ul class="simple">
<li>the Python2.7 compatible release — <strong>PyPy2.7 v5.7.0</strong> — (<a class="reference external" href="http://doc.pypy.org/en/latest/release-v5.7.0.html">what's new in PyPy2.7?</a>)</li>
<li>the Python3.5 compatible beta quality release — <strong>PyPy3.5 v5.7.0</strong> — (<a class="reference external" href="http://doc.pypy.org/en/latest/release-v5.7.0.html">what's new in PyPy3.5?</a>).</li>
Armin Rigo's avatar
Armin Rigo committed
<li>the Python2.7 Software Transactional Memory special release — <strong>PyPy-STM 2.5.1</strong> (Linux x86-64 only)</li>
Matti Picus's avatar
Matti Picus committed
</ul>
<ul class="download-menu simple">
<li>Download<ul>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<li><a class="reference internal" href="#default-with-a-jit-compiler">Default (with a JIT Compiler)</a></li>
<li><a class="reference internal" href="#other-versions">Other versions</a></li>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<li><a class="reference internal" href="#installing">Installing</a> (optional)</li>
<li><a class="reference internal" href="#installing-more-modules">Installing more modules</a></li>
<li><a class="reference internal" href="#installing-numpy">Installing NumPy</a> (optional)</li>
<li><a class="reference internal" href="#building-from-source">Building from source</a></li>
<li><a class="reference internal" href="#packaging">Packaging</a></li>
Armin Rigo's avatar
Armin Rigo committed
<li><a class="reference internal" href="#checksums">Checksums</a></li>
<div class="section" id="jit-compiler-version">
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<span id="default-with-a-jit-compiler"></span><h1>&ldquo;JIT Compiler&rdquo; version</h1>
<p>These binaries include a Just-in-Time compiler.  They only work on
Armin Rigo's avatar
Armin Rigo committed
x86 CPUs that have the <a class="reference external" href="http://en.wikipedia.org/wiki/SSE2">SSE2</a> instruction set (most of
them do, nowadays), or on x86-64 CPUs. They also contain <a class="reference external" href="http://www.stackless.com/">stackless</a>
Matti Picus's avatar
Matti Picus committed
extensions, like <a class="reference external" href="http://pypy.readthedocs.org/en/latest/stackless.html#greenlets">greenlets</a>.</p>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
</div>
Matti Picus's avatar
Matti Picus committed
<div class="section" id="linux-binaries-and-common-distributions">
<h1>Linux binaries and common distributions</h1>
<p>Linux binaries are dynamically linked, as is usual, and thus might
not be usable due to the sad story of linux binary compatibility.  This means
that <strong>Linux binaries are only usable on the distributions written next to
them</strong> unless you're ready to hack your system by adding symlinks to the
libraries it tries to open.  There are better solutions:</p>
<ul class="simple">
<li>use Squeaky's <a class="reference external" href="https://github.com/squeaky-pl/portable-pypy#portable-pypy-distribution-for-linux">portable Linux binaries</a>.</li>
<li>or download PyPy from your release vendor (usually an outdated
version): <a class="reference external" href="http://packages.ubuntu.com/search?keywords=pypy&amp;searchon=names">Ubuntu</a> (<a class="reference external" href="https://launchpad.net/~pypy/+archive/ppa">PPA</a>), <a class="reference external" href="http://packages.debian.org/sid/pypy">Debian</a>, <a class="reference external" href="https://github.com/mxcl/homebrew/blob/master/Library/Formula/pypy.rb">Homebrew</a>, MacPorts,
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<a class="reference external" href="http://fedoraproject.org/wiki/Features/PyPyStack">Fedora</a>, <a class="reference external" href="http://packages.gentoo.org/package/dev-python/pypy">Gentoo</a> and <a class="reference external" href="https://wiki.archlinux.org/index.php/PyPy">Arch</a> are known to package PyPy, with various
degrees of being up-to-date.</li>
<li>or <a class="reference internal" href="#translate">translate</a> your own PyPy.</li>
Matti Picus's avatar
Matti Picus committed
</div>
<div class="section" id="python2-7-compatible-pypy-5-7-0">
<span id="release"></span><h1>Python2.7 compatible PyPy 5.7.0</h1>
<ul class="simple">
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-linux32.tar.bz2">Linux x86 binary (32bit, tar.bz2 built on Ubuntu 12.04 - 14.04)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-linux64.tar.bz2">Linux x86-64 binary (64bit, tar.bz2 built on Ubuntu 12.04 - 14.04)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-linux-armhf-raspbian.tar.bz2">ARM Hardfloat Linux binary (ARMHF/gnueabihf, tar.bz2, Raspbian)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-linux-armhf-raring.tar.bz2">ARM Hardfloat Linux binary (ARMHF/gnueabihf, tar.bz2, Ubuntu Raring)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-linux-armel.tar.bz2">ARM Softfloat Linux binary (ARMEL/gnueabi, tar.bz2,  Ubuntu Precise)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-osx64.tar.bz2">Mac OS/X binary (64bit)</a></li>
<li>FreeBSD x86 and x86_64: see <a class="reference external" href="http://www.freshports.org/lang/pypy">FreshPorts</a></li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-win32.zip">Windows binary (32bit)</a> (you might need the VS 2008 runtime library
installer <a class="reference external" href="http://www.microsoft.com/en-us/download/details.aspx?id=5582">vcredist_x86.exe</a>.)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-ppc64.tar.bz2">PowerPC PPC64 Linux binary (64bit big-endian, Fedora 20)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-ppc64le.tar.bz2">PowerPC PPC64le Linux binary (64bit little-endian, Fedora 21)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-s390x.tar.bz2">s390x Linux binary (tar.bz2 built on Redhat Linux 7.2)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-src.tar.bz2">Source (tar.bz2)</a>; <a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-src.zip">Source (zip)</a>.  See below for more about the sources.</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads">All our downloads,</a> including previous versions.  We also have a
<a class="reference external" href="http://buildbot.pypy.org/mirror/">mirror</a>, but please use only if you have troubles accessing the links above</li>
Matti Picus's avatar
Matti Picus committed
</ul>
</div>
<div class="section" id="python-3-5-3-compatible-pypy3-5-v5-7">
<h1>Python 3.5.3 compatible PyPy3.5 v5.7</h1>
<p class="download-menu">Warning: PyPy3.5 is considered <strong>beta software.</strong>  All binaries
are thus called &ldquo;beta&rdquo;.  It is known to be rarely much slower than
Armin Rigo's avatar
Armin Rigo committed
PyPy 2.  You are welcome to use it anyway; if you're lucky it will
be fast in your case.</p>
<ul class="simple">
Philip Jenvey's avatar
Philip Jenvey committed
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3-v5.7.0-linux64.tar.bz2">Linux x86-64 binary (64bit, tar.bz2 built on Ubuntu 12.04 - 14.04)</a> (see <tt class="docutils literal">[1]</tt> below)</li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3-v5.7.0-src.tar.bz2">Source (tar.bz2)</a></li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3-v5.7.0-src.zip">Source (zip)</a></li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads">All our downloads,</a> including previous versions.  We also have a
<a class="reference external" href="http://buildbot.pypy.org/mirror/">mirror</a>, but please use only if you have troubles accessing the links above</li>
<p>If your CPU is really, really old, it may be a x86-32 without SSE2.
There is untested support for manually translating PyPy's JIT without
SSE2 (<tt class="docutils literal"><span class="pre">--jit-backend=x86-without-sse2</span></tt>) but note that your machine
is probably low-spec enough that running CPython on it is a better
idea in the first place.</p>
<p><tt class="docutils literal">[1]:</tt> stating it again: the Linux binaries are provided for the
distributions listed here.  <strong>If your distribution is not exactly this
Matti Picus's avatar
Matti Picus committed
one, it won't work,</strong> you will probably see: <tt class="docutils literal">pypy: error while loading shared
libraries: &#8230;</tt>.  Unless you want to hack a lot, try out the
<a class="reference external" href="https://github.com/squeaky-pl/portable-pypy#portable-pypy-distribution-for-linux">portable Linux binaries</a>.</p>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
</div>
Armin Rigo's avatar
Armin Rigo committed
<div class="section" id="pypy-stm-2-5-1">
<h1>PyPy-STM 2.5.1</h1>
<p>This is a special version of PyPy!  See the <a class="reference external" href="http://doc.pypy.org/en/latest/stm.html">Software Transactional
Memory</a> (STM) documentation.</p>
<ul class="simple">
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy-stm-2.5.1-linux64.tar.bz2">PyPy-STM Linux x86-64 binary (64bit, tar.bz2 built on Ubuntu 12.04 - 14.04)</a></li>
</ul>
</div>
Armin Rigo's avatar
Armin Rigo committed
<div class="section" id="other-versions">
<span id="other-versions-without-a-jit"></span><h1>Other versions</h1>
<p>The other versions of PyPy are:</p>
Matti Picus's avatar
Matti Picus committed
<li>The most up-to-date <a class="reference external" href="http://buildbot.pypy.org/nightly/trunk/">nightly binary builds</a> with a JIT, if the official
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
release is too old for what you want to do. There are versions for
different libc on this site too.</li>
Armin Rigo's avatar
Armin Rigo committed
<li>Reverse debugger: This version enables debugging your Python
programs by going forward and backward in time.  See the <a class="reference external" href="https://bitbucket.org/pypy/revdb/">RevDB
Armin Rigo's avatar
Armin Rigo committed
documentation</a>.</li>
</ul>
<ul class="simple">
Armin Rigo's avatar
Armin Rigo committed
<li>Sandboxing: A special safe version.  Read the docs about <a class="reference external" href="features.html#sandboxing">sandboxing</a>.
(It is also possible to <a class="reference internal" href="#translate">translate</a> a version that includes both
sandboxing and the JIT compiler, although as the JIT is relatively
Armin Rigo's avatar
Armin Rigo committed
complicated, this reduces a bit the level of confidence we can put in
the result.) <strong>Note that the sandboxed binary needs a full pypy checkout
Armin Rigo's avatar
Armin Rigo committed
to work</strong>. Consult the <a class="reference external" href="http://doc.pypy.org/en/latest/sandbox.html">sandbox docs</a> for details. (These are old,
PyPy 1.8.)<ul>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy-1.8-sandbox-linux64.tar.bz2">Linux binary (64bit)</a></li>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy-1.8-sandbox-linux.tar.bz2">Linux binary (32bit)</a></li>
<div class="section" id="installing">
<h1>Installing</h1>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<p>All binary versions are packaged in a <tt class="docutils literal">tar.bz2</tt> or <tt class="docutils literal">zip</tt> file.  When
Armin Rigo's avatar
Armin Rigo committed
uncompressed, they run in-place.  For now you can uncompress them
either somewhere in your home directory or, say, in <tt class="docutils literal">/opt</tt>, and
if you want, put a symlink from somewhere like
<tt class="docutils literal">/usr/local/bin/pypy</tt> to <tt class="docutils literal"><span class="pre">/path/to/pypy2-5.7.0/bin/pypy</span></tt>.  Do
Armin Rigo's avatar
Armin Rigo committed
not move or copy the executable <tt class="docutils literal">pypy</tt> outside the tree &ndash; put
a symlink to it, otherwise it will not find its libraries.</p>
<div class="section" id="installing-more-modules">
<h1>Installing more modules</h1>
<p>There are as yet few distribution-ready packages.
We recommend installing <tt class="docutils literal">pip</tt>, which is the standard package
manager of Python.  It works like it does on CPython as explained in the
<a class="reference external" href="http://doc.pypy.org/en/latest/install.html">installation documentation</a>.</p>
<p>If you use your distribution's PyPy package we recommend you install packages
into a virtualenv. If you try to build a module and the build process complains
about &ldquo;missing Python.h&rdquo;, you may need to install the pypy-dev package.</p>
</div>
<div class="section" id="installing-numpy">
<h1>Installing NumPy</h1>
<p><strong>There are two different versions of NumPy for PyPy.</strong></p>
<div class="section" id="numpy-via-cpyext">
<h2>1. NumPy via cpyext</h2>
<p>The generally recommended way is to install the original NumPy via the
CPython C API compatibility layer, cpyext.  Modern versions of PyPy
support enough of the C API to make this a reasonable choice in many
cases.  Performance-wise, the speed is mostly the same as CPython's
NumPy (it is the same code); the exception is that interactions between
the Python side and NumPy objects are mediated through the slower cpyext
layer (which hurts a few benchmarks that do a lot of element-by-element
array accesses, for example).</p>
<p>Installation works on any recent PyPy (the <a class="reference internal" href="#release">release</a> above is fine, a recent
nightly will implement more of the new buffer protocol).
The currently released numpy 1.12 works except for <tt class="docutils literal">nditers</tt> with the
<tt class="docutils literal">updateifcopy</tt> flag.
For example, without using a virtualenv:</p>
<pre class="literal-block">
$ ./pypy-xxx/bin/pypy -m ensurepip
$ ./pypy-xxx/bin/pypy -mpip install -U wheel # to update wheel
$ ./pypy-xxx/bin/pip install cython numpy
</pre>
<p>(See the general <a class="reference external" href="http://doc.pypy.org/en/latest/install.html">installation documentation</a> for more.)</p>
</div>
<div class="section" id="numpypy">
<h2>2. NumPyPy</h2>
<p>The &ldquo;numpy&rdquo; module can be installed from <a class="reference external" href="https://bitbucket.org/pypy/numpy">our own repository</a> rather
than from the official source.  This version uses internally our
built-in <tt class="docutils literal">_numpypy</tt> module.  This module is slightly incomplete.
Also, its performance is hard to predict exactly.  For regular NumPy
source code that handles large arrays, it is likely to be slower than
the native NumPy with cpyext.  It is faster on the kind of code that
contains many Python loops doing things on an element-by-element basis.</p>
<p>Installation (see the <a class="reference external" href="http://doc.pypy.org/en/latest/install.html">installation documentation</a> for installing <tt class="docutils literal">pip</tt>):</p>
pypy -m pip install git+https://bitbucket.org/pypy/numpy.git
</pre>
<p>Alternatively, the direct way:</p>
<pre class="literal-block">
git clone https://bitbucket.org/pypy/numpy.git
cd numpy
pypy setup.py install
</pre>
<p>If you installed to a system directory, you need to also run this once:</p>
<pre class="literal-block">
sudo pypy -c 'import numpy'
</pre>
<p>Note again that this version is still a work-in-progress: many things do
not work and those that do may not be any faster than NumPy on CPython.
For further instructions see <a class="reference external" href="https://bitbucket.org/pypy/numpy">the pypy/numpy repository</a>.</p>
<div class="section" id="building-from-source">
<span id="translate"></span><h1>Building from source</h1>
<p>(see more build <a class="reference external" href="http://pypy.readthedocs.org/en/latest/build.html">instructions</a>)</p>
Armin Rigo's avatar
Armin Rigo committed
<li><p class="first">Get the source code.  The preferred way is to checkout the current
trunk using <a class="reference external" href="https://www.mercurial-scm.org/">Mercurial</a>.  The trunk usually works and is of course
more up-to-date.  The following command should run in about 7 minutes
nowadays if you have hg &gt;= 3.7 (it is much slower with older versions):</p>
<pre class="literal-block">
hg clone https://bitbucket.org/pypy/pypy
</pre>
<p>Alternatively, the following smaller package contains the source at
Armin Rigo's avatar
Armin Rigo committed
the same revision as the above binaries:</p>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.7.0-src.tar.bz2">pypy2-v5.7.0-src.tar.bz2</a> (sources)</li>
<li><p class="first">Make sure you <strong>installed the dependencies.</strong>  See the list <a class="reference external" href="http://pypy.readthedocs.org/en/latest/build.html#install-build-time-dependencies">here</a>.</p>
Armin Rigo's avatar
Armin Rigo committed
</li>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<li><p class="first">Enter the <tt class="docutils literal">goal</tt> directory:</p>
<pre class="literal-block">
Armin Rigo's avatar
Armin Rigo committed
cd pypy/pypy/goal
Armin Rigo's avatar
Armin Rigo committed
<li><p class="first">Run the <tt class="docutils literal">rpython</tt> script.  Here are the common combinations
Armin Rigo's avatar
Armin Rigo committed
of options (works also with <tt class="docutils literal">python</tt> instead of <tt class="docutils literal">pypy</tt>;
requires CPython 2.7 or PyPy 2):</p>
<pre class="literal-block">
Armin Rigo's avatar
Armin Rigo committed
pypy ../../rpython/bin/rpython -Ojit targetpypystandalone           # get the JIT version
pypy ../../rpython/bin/rpython -O2 targetpypystandalone             # get the no-jit version
pypy ../../rpython/bin/rpython -O2 --sandbox targetpypystandalone   # get the sandbox version
Armin Rigo's avatar
Armin Rigo committed
</pre>
<li><p class="first">Enjoy Mandelbrot <tt class="docutils literal"><span class="pre">:-)</span></tt>  It takes on the order of half an hour to
finish the translation, and about 3GB of RAM on a 32-bit system
and about 5GB on 64-bit systems.  (Do not start a translation on a
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
machine with insufficient RAM!  It will just swap forever.  See
notes below in that case.)</p>
Armin Rigo's avatar
Armin Rigo committed
</li>
<li><p class="first">If you want to install this PyPy as root, please read the next section,
<a class="reference internal" href="#packaging">Packaging</a>.</p>
Armin Rigo's avatar
Armin Rigo committed
</li>
<p>Notes:</p>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<ul>
<li><p class="first">It is recommended to use PyPy to do translations, instead of using CPython,
because it is twice as fast.  You should just start by downloading an
Armin Rigo's avatar
Armin Rigo committed
official release of PyPy (with the JIT).  If you really have to use CPython
then note that we are talking about CPython 2.7 here, not CPython 3.x.
(Older versions like 2.6 are out.)</p>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
</li>
<li><p class="first">On some 32-bit systems, the address space limit of 2 or 3 GB of RAM
can be an issue.  More generally you may be just a little bit low of
RAM.  First note that 2 GB is really not enough nowadays; on Windows
you first need to refer to the <a class="reference external" href="http://doc.pypy.org/en/latest/windows.html#preparing-windows-for-the-large-build">Windows build instructions</a>.  More
precisely, translation on 32-bit takes at this point 2.7 GB if PyPy is
used and 2.9 GB if CPython is used.  There are two workarounds:</p>
<p>1. use PyPy, not CPython.  If you don't have any PyPy so far, not even
an older version, then you need to build one first, with some parts
removed.  So, first translate with <tt class="docutils literal"><span class="pre">...rpython</span> <span class="pre">-Ojit</span>
targetpypystandalone <span class="pre">--withoutmod-micronumpy</span> <span class="pre">--withoutmod-cpyext</span></tt>,
then copy <tt class="docutils literal"><span class="pre">pypy-c</span></tt> and <tt class="docutils literal">libpypy_c.so</tt> somewhere else, and finally
call it with <tt class="docutils literal"><span class="pre">...pypy-c</span> <span class="pre">../../rpython/bin/rpython</span> <span class="pre">-Ojit</span></tt>.</p>
<p>2. if even using PyPy instead of CPython is not enough, try to tweak
some internal parameters.  Example (slower but saves around 400MB):</p>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<pre class="literal-block">
PYPY_DONT_RUN_SUBPROCESS=1 PYPY_GC_MAX_DELTA=200MB pypy --jit loop_longevity=300 ../../rpython/bin/rpython -Ojit --source
# then read the next point about --source
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
</pre>
</li>
<li><p class="first">You can run translations with <tt class="docutils literal"><span class="pre">--source</span></tt>, which only builds the C
source files (and prints at the end where).  Then you can <tt class="docutils literal">cd</tt> there
and execute <tt class="docutils literal">make</tt>.  This is another way to reduce memory usage.
Note that afterwards, you have to run manually <tt class="docutils literal"><span class="pre">pypy-c</span>
<span class="pre">.../pypy/tool/build_cffi_imports.py</span></tt> if you want to be able to import
the cffi-based modules.</p>
</li>
<li><p class="first">On Linux, translating with <tt class="docutils literal">asmgcroot</tt>, is delicate.
It requires using gcc with no particularly
Armin Rigo's avatar
Armin Rigo committed
fancy options.  It does not work e.g. with clang, or if you pass uncommon
Armin Rigo's avatar
Armin Rigo committed
options with the <tt class="docutils literal">CFLAGS</tt> environment variable.  If you insist on
passing these options or using clang, then you can compile PyPy with
the default <a class="reference external" href="http://pypy.readthedocs.org/en/latest/config/translation.gcrootfinder.html">shadow stack</a> option instead (for a small performance price in
Armin Rigo's avatar
Armin Rigo committed
non-JITted code).</p>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
</li>
<li><p class="first">Like other JITs, PyPy doesn't work out of the box on some Linux
distributions that trade full POSIX compliance for extra security
features.  E.g. with PAX, you have to run PyPy with <tt class="docutils literal">paxctl <span class="pre">-cm</span></tt>.
This also applies to translation (unless you use CPython to run the
translation and you specify <tt class="docutils literal"><span class="pre">--source</span></tt>).</p>
</li>
<div class="section" id="packaging">
<h1>Packaging</h1>
<p>Once PyPy is translated from source the binary package similar to those
provided in the section <a class="reference internal" href="#default-with-a-jit-compiler">Default (with a JIT Compiler)</a> above could be
easily created with <tt class="docutils literal">package.py</tt> script as following:</p>
<pre class="literal-block">
cd ./pypy/pypy/tool/release/
Matti Picus's avatar
Matti Picus committed
python package.py --help #for information
python package.py --archive-name pypy-my-own-package-name
Armin Rigo's avatar
Armin Rigo committed
<p>It is recommended to use package.py because custom scripts will
invariably become out-of-date.  If you want to write custom scripts
anyway, note an easy-to-miss point: some modules are written with CFFI,
and require some compilation.  If you install PyPy as root without
pre-compiling them, normal users will get errors:</p>
<ul class="simple">
<li>PyPy 2.5.1 or earlier: normal users would see permission errors.
Installers need to run <tt class="docutils literal">pypy <span class="pre">-c</span> &ldquo;import gdbm&rdquo;</tt> and other similar
commands at install time; the exact list is in <a class="reference external" href="https://bitbucket.org/pypy/pypy/src/default/pypy/tool/release/package.py">package.py</a>.  Users
seeing a broken installation of PyPy can fix it after-the-fact if they
have sudo rights, by running once e.g. <tt class="docutils literal">sudo pypy <span class="pre">-c</span> &quot;import gdbm</tt>.</li>
<li>PyPy 2.6 and later: anyone would get <tt class="docutils literal">ImportError: no module named
_gdbm_cffi</tt>.  Installers need to run <tt class="docutils literal">pypy _gdbm_build.py</tt> in the
<tt class="docutils literal">lib_pypy</tt> directory during the installation process (plus others;
see the exact list in <a class="reference external" href="https://bitbucket.org/pypy/pypy/src/default/pypy/tool/release/package.py">package.py</a>).  Users seeing a broken
installation of PyPy can fix it after-the-fact, by running <tt class="docutils literal">pypy
/path/to/lib_pypy/_gdbm_build.py</tt>.  This command produces a file
called <tt class="docutils literal"><span class="pre">_gdbm_cffi.pypy-41.so</span></tt> locally, which is a C extension
module for PyPy.  You can move it at any place where modules are
normally found: e.g. in your project's main directory, or in a
directory that you add to the env var <tt class="docutils literal">PYTHONPATH</tt>.</li>
</ul>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
<div class="section" id="checksums">
<h1>Checksums</h1>
Matti Picus's avatar
Matti Picus committed
<p>Here are the checksums for each of the downloads</p>
<p>pypy2.7-v5.7.0 md5:</p>
Philip Jenvey's avatar
Philip Jenvey committed
<pre class="literal-block">
bb55f4a28d64d40367a58139b25b02fe  pypy2-v5.7.0-linux32.tar.bz2
84b542e3aaca2aec9b0ca3afb6a3373b  pypy2-v5.7.0-linux64.tar.bz2
9f98c917ec1dbbda821bd23734fdc4d4  pypy2-v5.7.0-linux-armel.tar.bz2
509539d3f5876584fa5cad6fd125e446  pypy2-v5.7.0-linux-armhf-raring.tar.bz2
34739358ba2e438d27b777838154f255  pypy2-v5.7.0-linux-armhf-raspbian.tar.bz2
6b6180f4b0932d5a3a7499ddef1c5129  pypy2-v5.7.0-osx64.tar.bz2
180d5cc3f58a9f9088481c7d4c6b5d68  pypy2-v5.7.0-s390x.tar.bz2
aa26e72c1f30b77734198af6fb6f9ad7  pypy2-v5.7.0-src.tar.bz2
f1633ad18e0af309aa11e3425f628cf9  pypy2-v5.7.0-src.zip
23f15d2bc0c29fe6948a99352962ebf0  pypy2-v5.7.0-win32.zip
<p>pypy 3.5-v5.7.0 md5:</p>
<pre class="literal-block">
410fb506ac436c344f785bb77820e13e  pypy3-v5.7.0-linux64.tar.bz2
79b1d5749eb97be36933dbdf156fec02  pypy3-v5.7.0-src.tar.bz2
594f3d17be1c80181d13c0f025ae25f6  pypy3-v5.7.0-src.zip
</pre>
<p>pypy3.3-v5.5.0-alpha md5:</p>
Matti Picus's avatar
Matti Picus committed
<pre class="literal-block">
e9bdfb330a30765eaf76ddd4e826a45e  pypy3.3-v5.5.0-alpha-linux32.tar.bz2
b04022a5a549bba719c9a184c783805c  pypy3.3-v5.5.0-alpha-linux64.tar.bz2
84424f01b2746c71f64e27cb4c7069a1  pypy3.3-v5.5.0-alpha-linux-armel.tar.bz2
9d18b171a7249227f3a3b74af8070c82  pypy3.3-v5.5.0-alpha-linux-armhf-raspbian.tar.bz2
d2424a9e3ff31e26e5b1f0ceade5e9f7  pypy3.3-v5.5.0-alpha-osx64.tar.bz2
c32728185d89f9c0fda9481f2f9ae61d  pypy3.3-v5.5.0-alpha-s390x.tar.bz2
536008fd7b17af8878915393fc1ecfc3  pypy3.3-v5.5.0-alpha-src.tar.bz2
4fc66068848dbfc09b210d3115380b0a  pypy3.3-v5.5.0-alpha-src.zip
Matti Picus's avatar
Matti Picus committed
</pre>
<p>pypy-1.8 sandbox md5:</p>
<pre class="literal-block">
2c9f0054f3b93a6473f10be35277825a  pypy-1.8-sandbox-linux64.tar.bz2
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
009c970b5fa75754ae4c32a5d108a8d4  pypy-1.8-sandbox-linux.tar.bz2
Matti Picus's avatar
Matti Picus committed
</pre>
Matti Picus's avatar
Matti Picus committed
<p>pypy2.7-v5.7.0 sha1:</p>
Philip Jenvey's avatar
Philip Jenvey committed
<pre class="literal-block">
c8cc2cbc2b75962d0e5920f4a756f7fe3f13596c  pypy2-v5.7.0-linux32.tar.bz2
0a831dae298fce2110626637342d0e3545a8ab47  pypy2-v5.7.0-linux64.tar.bz2
556face1374a75720177176a4c7517bb4f9a62a5  pypy2-v5.7.0-linux-armel.tar.bz2
bec04d53cd2a7cc89cf67cfdab2207ad6c08781b  pypy2-v5.7.0-linux-armhf-raring.tar.bz2
c510f53447fc800b4611545d2679d596d8f0c461  pypy2-v5.7.0-linux-armhf-raspbian.tar.bz2
097e418d5aa61c7697a50536c5b173d8211603a9  pypy2-v5.7.0-osx64.tar.bz2
a11cf7d95a909c8e60bafc79ff491711ecd0ee29  pypy2-v5.7.0-ppc64.tar.bz2
0ccb73316935c5610e5170330556443abd87d3cd  pypy2-v5.7.0-ppc64le.tar.bz2
20f33a4d0c08a5d4935086caec73be3d92b60b2b  pypy2-v5.7.0-s390x.tar.bz2
5976e1f19a42f64f778d385322723200b5c6d7c9  pypy2-v5.7.0-src.tar.bz2
c84ad90184edb315031074696e805ecbc08494e3  pypy2-v5.7.0-src.zip
15df479b08870dc6ec9cab0e4587935fc0694cb8  pypy2-v5.7.0-win32.zip
<p>pypy 3.5-v5.7.0 sha1:</p>
<pre class="literal-block">
e10511bde5a88c5de9fdf9234188b8df23382a6a  pypy3-v5.7.0-linux64.tar.bz2
0b12230025d77be26bc10cbc81671c4b3719528c  pypy3-v5.7.0-src.tar.bz2
ae256d83173faaadce9602594fd752fb664b813b  pypy3-v5.7.0-src.zip
</pre>
<p>pypy3.3-v5.5.0-alpha sha1:</p>
<pre class="literal-block">
1de17b61b8d21e408a46114961659b4c0f15cb54  pypy3.3-v5.5.0-alpha-linux32.tar.bz2
995ae3b983d9975006b898f098b27408949d2fdf  pypy3.3-v5.5.0-alpha-linux64.tar.bz2
2487f726d7b50aef041beba2bb0f39fe4d7392da  pypy3.3-v5.5.0-alpha-linux-armel.tar.bz2
ed104a504664a7ccd971da202abe14302246175a  pypy3.3-v5.5.0-alpha-linux-armhf-raspbian.tar.bz2
0f6456672b02e4856421021d2ff71ffaca2e2c3e  pypy3.3-v5.5.0-alpha-osx64.tar.bz2
018e9e9e4c54fcef3959bc316f3e684f88231ab4  pypy3.3-v5.5.0-alpha-s390x.tar.bz2
9eb6aad2d41f7db16c19ae6e438c8f195b0d44fc  pypy3.3-v5.5.0-alpha-src.tar.bz2
b670cdc685c323b11bfdca2a15f12c5953e6d8b4  pypy3.3-v5.5.0-alpha-src.zip
Matti Picus's avatar
Matti Picus committed
<p>pypy2.7-v5.7.0 sha256:</p>
Philip Jenvey's avatar
Philip Jenvey committed
<pre class="literal-block">
aaa55085d11a49cb982b059b4159495d7a4fb9afcfda7bfd680cc0175e9fa33b  pypy2-v5.7.0-linux32.tar.bz2
64bed80e299b09c13296f577a0f52c5d4be9f7c699a390ca6026f967aeff3846  pypy2-v5.7.0-linux64.tar.bz2
3bc0d2616cacef9f544e739d4c25a89e16d7aa8c1ccb18c32dceeb021ed73711  pypy2-v5.7.0-linux-armel.tar.bz2
413df8097c87a8e79cc46df65837b1d533de83b7cb06ce88b168697807fff696  pypy2-v5.7.0-linux-armhf-raring.tar.bz2
6328e4767cf20d20a290739db2d1ec769f3c9c360fa9824f61581b3356add79b  pypy2-v5.7.0-linux-armhf-raspbian.tar.bz2
9204aa1b55771a374a3118bb43e498c88caca8c33710eecf3249855c4dd1352a  pypy2-v5.7.0-osx64.tar.bz2
ca936b034a5cd2decfd3b500fad3c28e5a6327a77bb56b2d2ba6ff0159c00f2c  pypy2-v5.7.0-ppc64.tar.bz2
3ecb3165c85df60f8e59bfdf28304cd40894d304ee04a4d58dc8b9947cbb2b01  pypy2-v5.7.0-ppc64le.tar.bz2
8820b36f38b4aa44c1ef2be213c7d13818c9fdb61795f24f4fb18a7a78d2dde7  pypy2-v5.7.0-s390x.tar.bz2
e522ea7ca51b16ee5505f22b86803664b762a263a6d69ba84c359fcf8365ad3e  pypy2-v5.7.0-src.tar.bz2
784be3d2b8bb12a0d88d088fd991b03324d9f84a48af5dbaf2a536eaee91d8b5  pypy2-v5.7.0-src.zip
09c8da3a7e09cea821f9b300c6f4f52f4a571d949d91839ecbce93b84a08d570  pypy2-v5.7.0-win32.zip
<p>pypy 3.5-v5.7.0 sha256:</p>
<pre class="literal-block">
921894884a647220a712ecdaad516d9c22fbadf3b4bb3a5db8f3635c60eabc7b  pypy3-v5.7.0-linux64.tar.bz2
f0f563b74f8b82ec33b022393219b93cc0d81e9f9500614fe8417b67a52e9569  pypy3-v5.7.0-src.tar.bz2
fe8b9804a8599ef5b16114fb64ba8392342f0066dfe81103b89198a3c5d10989  pypy3-v5.7.0-src.zip
</pre>
<p>pypy3.3-v5.5.0-alpha sha256:</p>
<pre class="literal-block">
966ee7951ad497ac907e01554fe48da77cc64a5e35a1307477c2f78652eba622  pypy3.3-v5.5.0-alpha-linux32.tar.bz2
41ef7c25fd04eeb20deaa83c5d88c10aef2bbc8bcfd9e53e7cc61136220861cc  pypy3.3-v5.5.0-alpha-linux64.tar.bz2
9f081041867f434f18456f936befbacd9f40c0ede24137cbf80f9f45ff37b69f  pypy3.3-v5.5.0-alpha-linux-armel.tar.bz2
d8e94c834307081d5c4be863fab935e34df360a77b06e8bc833624c4b712b2aa  pypy3.3-v5.5.0-alpha-linux-armhf-raspbian.tar.bz2
fa45f861a6c40ae44f99ec94c521adfb6b64b0c9c0b6fc6e9df018241a648986  pypy3.3-v5.5.0-alpha-osx64.tar.bz2
c4a0a75a987b3dacd811c653e57b6a0a01fc31cdaf671e83ad43f4c107961a02  pypy3.3-v5.5.0-alpha-s390x.tar.bz2
d5591c34d77253e9ed57d182b6f49585b95f7c09c3e121f0e8630e5a7e75ab5f  pypy3.3-v5.5.0-alpha-src.tar.bz2
43b3791f77f253d4da59fdeeec49b1daefea9a57321c726a19b4924c520a0b49  pypy3.3-v5.5.0-alpha-src.zip
Matti Picus's avatar
Matti Picus committed
</pre>
<p>pypy-1.8 sandbox sha1:</p>
<pre class="literal-block">
895aaf7bba5787dd30adda5cc0e0e7fc297c0ca7  pypy-1.8-sandbox-linux64.tar.bz2
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
be94460bed8b2682880495435c309b6611ae2c31  pypy-1.8-sandbox-linux.tar.bz2
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
</pre>
Maciej Fijalkowski's avatar
Maciej Fijalkowski committed
</div>
</div>
<div id="sidebar">
</div>
</div>
</div>
</div></div></div>
</body>