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>
<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&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
<p>We provide binaries for x86, ARM, PPC and s390x running on different operating systems such as
<li>the Python2.7 compatible release — <strong>PyPy2.7 v5.9.0</strong> — (<a class="reference external" href="http://doc.pypy.org/en/latest/release-v5.9.0.html">what's new in PyPy2.7?</a>)</li>
<li>the Python3.5 compatible beta quality release — <strong>PyPy3.5 v5.9.0</strong> — (<a class="reference external" href="http://doc.pypy.org/en/latest/release-v5.9.0.html">what's new in PyPy3.5?</a>).</li>
<li>the Python2.7 Software Transactional Memory special release — <strong>PyPy-STM 2.5.1</strong> (Linux x86-64 only)</li>
<ul class="download-menu simple">
<li><a class="reference internal" href="#default-with-a-jit-compiler">Default (with a JIT Compiler)</a></li>
Armin Rigo
committed
<li><a class="reference internal" href="#other-versions">Other versions</a></li>
<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>
<li><a class="reference internal" href="#checksums">Checksums</a></li>
<div class="section" id="jit-compiler-version">
<span id="default-with-a-jit-compiler"></span><h1>“JIT Compiler” version</h1>
<p>These binaries include a Just-in-Time compiler. They only work on
x86 CPUs that have the <a class="reference external" href="http://en.wikipedia.org/wiki/SSE2">SSE2</a> instruction set (most of
Maciej Fijalkowski
committed
them do, nowadays), or on x86-64 CPUs. They also contain <a class="reference external" href="http://www.stackless.com/">stackless</a>
extensions, like <a class="reference external" href="http://pypy.readthedocs.org/en/latest/stackless.html#greenlets">greenlets</a>.</p>
<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&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,
<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>
<div class="section" id="python2-7-compatible-pypy-5-9-0">
<span id="release"></span><h1>Python2.7 compatible PyPy 5.9.0</h1>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.9.0-linux32.tar.bz2">Linux x86 binary (32bit, tar.bz2 built on Ubuntu 12.04 - 16.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.9.0-linux64.tar.bz2">Linux x86-64 binary (64bit, tar.bz2 built on Ubuntu 12.04 - 16.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.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.9.0-src.tar.bz2">Source (tar.bz2)</a>; <a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.9.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>
<div class="section" id="python-3-5-3-compatible-pypy3-5-v5-9">
<h1>Python 3.5.3 compatible PyPy3.5 v5.9</h1>
<p class="download-menu">Warning: PyPy3.5 is considered <strong>beta software.</strong> All binaries
are thus called “beta”. It is known to be rarely much slower than
PyPy 2. You are welcome to use it anyway; if you're lucky it will
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3-v5.9.0-linux64.tar.bz2">Linux x86-64 binary (64bit, tar.bz2 built on Ubuntu 12.04 - 16.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.9.0-src.tar.bz2">Source (tar.bz2)</a></li>
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy3-v5.9.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
one, it won't work,</strong> you will probably see: <tt class="docutils literal">pypy: error while loading shared
libraries: …</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>
<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 - 16.04)</a></li>
<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>
<ul class="simple">
<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
release is too old for what you want to do. There are versions for
different libc on this site too.</li>
<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
documentation</a>.</li>
</ul>
<ul class="simple">
<li>Sandboxing: A special safe version. Read the docs about <a class="reference external" href="features.html#sandboxing">sandboxing</a>.
Armin Rigo
committed
This version is <strong>not supported</strong> and not actively maintained. You
will likely have to fix some issues yourself, or checkout an old
version, or otherwise play around on your own. We provide this
documentation only for historical reasons. Please do not use in
production. For reference, there are some very old, unmaintained
binaries for Linux (<a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy-1.8-sandbox-linux64.tar.bz2">32bit</a>, <a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy-1.8-sandbox-linux.tar.bz2">64bit</a>).</li>
</ul>
</div>
<div class="section" id="installing">
<h1>Installing</h1>
<p>All binary versions are packaged in a <tt class="docutils literal">tar.bz2</tt> or <tt class="docutils literal">zip</tt> file. When
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.9.0/bin/pypy</span></tt>. Do
not move or copy the executable <tt class="docutils literal">pypy</tt> outside the tree – 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 “missing Python.h”, 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> For details see this
<a class="reference external" href="http://doc.pypy.org/en/latest/faq.html#should-i-install-numpy-or-numpypy">FAQ question</a>.</p>
<div class="section" id="standard-numpy">
<h2>1. Standard NumPy</h2>
<p>Installation works on any recent PyPy (the <a class="reference internal" href="#release">release</a> above is fine).
The currently released numpy 1.13 works except for <tt class="docutils literal">nditers</tt> with the
<tt class="docutils literal">updateifcopy</tt> flag.
Matti Picus
committed
For example, without using a virtualenv:</p>
<pre class="literal-block">
$ ./pypy-xxx/bin/pypy -m ensurepip
$ ./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 “numpy” module can also 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 our
built-in <tt class="docutils literal">_numpypy</tt> multiarray replacement module, written in RPython.
This module is not complete, but if it works it should give correct answers.
Its performance is hard to predict exactly. For regular NumPy
source code that handles large arrays, it is likely to be slower than
the standard NumPy. It is faster on pure python code that loop over ndarrays
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>
<pre class="literal-block">
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 incomplete: 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> and the
<a class="reference external" href="http://doc.pypy.org/en/latest/faq.html#should-i-install-numpy-or-numpypy">FAQ question</a> about the difference between the two.</p>
</div>
</div>
<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>
<ol class="arabic">
<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 >= 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
<ul class="simple">
<li><a class="reference external" href="https://bitbucket.org/pypy/pypy/downloads/pypy2-v5.9.0-src.tar.bz2">pypy2-v5.9.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>
<li><p class="first">Enter the <tt class="docutils literal">goal</tt> directory:</p>
<pre class="literal-block">
</pre>
</li>
<li><p class="first">Run the <tt class="docutils literal">rpython</tt> script. Here are the common combinations
of options (works also with <tt class="docutils literal">python</tt> instead of <tt class="docutils literal">pypy</tt>;
<pre class="literal-block">
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
<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
machine with insufficient RAM! It will just swap forever. See
notes below in that case.)</p>
<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>
<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
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>
<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>
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
<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
fancy options. It does not work e.g. with clang, or if you pass uncommon
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
<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/
python package.py --help #for information
python package.py --archive-name pypy-my-own-package-name
<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> “import gdbm”</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> "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>
<div class="section" id="checksums">
<h1>Checksums</h1>
a0b125a5781f7e5ddfc3baca46503b14f4ee6a0e234e8d72bfcf3afdf4120bef pypy2-v5.8.0-linux32.tar.bz2
6274292d0e954a2609b15978cde6efa30942ba20aa5d2acbbf1c70c0a54e9b1e pypy2-v5.8.0-linux64.tar.bz2
28b7fd0cc7418ffc66c71520728e87941be40ebf4b82675c57e25598a2a702b0 pypy2-v5.8.0-linux-armel.tar.bz2
ddceca9c5c9a456d4bf1beab177660adffbbdf255a922244e1cc05f20318be46 pypy2-v5.8.0-linux-armhf-raring.tar.bz2
da58279a0e3706889fc0df06087cea08f8cfd22322139fe9bae73ef9b2d119b7 pypy2-v5.8.0-linux-armhf-raspbian.tar.bz2
04b61d1cf13aaca6d0420e854c820b8bd049dc88be16c02542abe8ca26eb075c pypy2-v5.8.0-osx64.tar.bz2
35aea25e2b9d2f7c8742c47e4e7474ef0f93ce1b5e3d4f5a99795bab23c1ad2c pypy2-v5.8.0-s390x.tar.bz2
504c2d522595baf8775ae1045a217a2b120732537861d31b889d47c340b58bd5 pypy2-v5.8.0-src.tar.bz2
ec1e34cc81a7f4086135bab29dcbe61d19fcd8d9d8fc1b149bea8373f94fd958 pypy2-v5.8.0-src.zip
43d6217653e5bdc09e3ff8cb56fb52c4eb019429063d80107be4e88eef79ea8d pypy2-v5.8.0-win32.zip
2e464bcbc8216e55bb2433ace712130244fd1f3fa78de0c0c98745fd8ff12b03 pypy2-v5.8.0-ppc64.tar.bz2
5746823904df74423376e0326046e1171df9693a6d4c95e8ce14ca83534bae72 pypy2-v5.8.0-ppc64le.tar.bz2
<blockquote>
a2431a9e4ef879da1a2b56b111013b4a6efb87d4173a37bf650de47834ac5fe4 pypy2-v5.9.0-linux32.tar.bz2
790febd4f09e22d6e2f81154efc7dc4b2feec72712aaf4f82aa91b550abb4b48 pypy2-v5.9.0-linux64.tar.bz2
ac0676d91dfb388c799ec5c2845f42018a666423376f52f3ae13d61fd2e6f87d pypy2-v5.9.0-linux-armel.tar.bz2
2597b7b21acdef4f2b81074a594157c9450363c74a17f005548c6b102f93cff4 pypy2-v5.9.0-linux-armhf-raring.tar.bz2
b8a20042a3f34486a372ff7c751539b2e16859c0a7ea69d5a73af92f0fdcb25a pypy2-v5.9.0-linux-armhf-raspbian.tar.bz2
94de50ed80c7f6392ed356c03fd54cdc84858df43ad21e9e971d1b6da0f6b867 pypy2-v5.9.0-osx64.tar.bz2
36d6b5158801c8aa4ef5b9d8990ca0a3782a38a04916be5644a33c2a82465101 pypy2-v5.9.0-s390x.tar.bz2
de4bf05df47f1349dbac97233d9277bbaf1ef3331663ea2557fd5da3dbcfd0a7 pypy2-v5.9.0-src.tar.bz2
db42dbed029eeac2da1dfe9bc71d63c934106acbed6bfad8910d2dabb557d9c2 pypy2-v5.9.0-src.zip
b61081e24e05b83d8110da1262be19f0094532c6cacc293e318a1c186d926533 pypy2-v5.9.0-win32.zip</blockquote>
<pre class="literal-block">
9d090127335c3c0fd2b14c8835bf91752e62756e55ea06aad3353f24a6854223 pypy3-v5.8.0-src.tar.bz2
57d871a7f1135719c138cee4e3533c3275d682a76a40ff668e95150c65923035 pypy3-v5.8.0-linux64.tar.bz2
8c868b5c8d15ce8acdf967f3c25da44bf52f6c7aa1fd1e50ebd50590f98066a4 pypy3-v5.8.0-src.zip
<p>pypy 3.5-v5.9.0 sha256:</p>
<pre class="literal-block">
d8c41ede3758127718944cc2fd6bf78ed4303d946f85596cac91281ccce36165 pypy3-v5.9.0-linux64.tar.bz2
a014f47f50a1480f871a0b82705f904b38c93c4ca069850eb37653fedafb1b97 pypy3-v5.9.0-src.tar.bz2
c5d7fa206cdf425de3950ef8ff578deb0745a723b69b64bb121210a5b8df8c65 pypy3-v5.9.0-src.zip
</pre>
</div>
<div id="sidebar">
</div>
</div>
</div>
</div></div></div>
</body>