[[Vorlage(Getestet, bionic)
(Getestet focal)]]

{{{#!vorlage Wissen
[:Pakete installieren: Installation von Programmen]
[:Terminal: Ein Terminal öffnen]
}}}

[[Inhaltsverzeichnis()]]

[[Bild(pypy-logo.png, 72, align=left)]]
[https://pypy.org/index.html PyPy] {en} ist eine Implementierung der Programmiersprache [:Python:], welche weitestgehend kompatibel zur Referenzimplementierung CPython ist.

Im Gegensatz zu CPython nutzt PyPy einen [wikipedia:Just-in-time-Kompilierung:Just-in-Time Compiler], so dass der meiste Python-Code (deutlich) schneller ausgeführt wird. Weitere Information hierzu sind auf der [https://pypy.org/features.html Webseite] {en} von PyPy zu finden.

= Installation =
PyPy und das "normale" Python (also die CPython-Implementierung) können problemlos parallel installiert werden.

== aus den Paketquellen ==
PyPy3 (also die Python3 Version) ist in den offiziellen Paketquellen enthalten. Das Paket kann wie folgt installiert werden[1]:

{{{#!vorlage Paketinstallation
pypy3, universe, ab Focal
}}}

Die Version aus dem Paketquellen ist aber nicht unbedingt die aktuellste Version. Dies bietet in der Regel aber eine bessere Kompatibilität mit der Referenzimplementierung.

== als snap ==
Die aktuelle Version von PyPy gibt es als snap, welches von den Entwicklern von PyPy selber bereit gestellt wird:

{{{#!vorlage Befehl
sudo snap install pypy3 --classic
}}}

[[Vorlage(Fremd, Software)]]

= Nutzung =
PyPy wird genau wie Python genutzt, nur das man ein Python-Skript nicht mit dem Befehl `python3` sondern mit `pypy3`:

So würde z.B. der Befehl[2]:

{{{#!vorlage Befehl
pypy3 mein_skript.py
}}}

das Skript '''mein_skript.py''' mit PyPy für Python 3.x starten.

Ruft man PyPy ohne Angabe eines Skripts auf, gelangt man - ebenso wie bei CPython - zu einer interaktiven Python-Shell.

PyPy kennt eine ganze Reihe von Optionen, die man aber eher selten braucht. Die komplette Liste der Optionen erhält man beim Aufruf von 

{{{#!vorlage Befehl
pypy3 --help
}}}

== Einschränkungen ==
Nutzt ein Python-Programm bzw. Modul eine in C geschriebene Erweiterung, die für CPython kompiliert wurde, dann funktioniert dieses eventuell nicht mit PyPy.

Viele (populäre) Pakete für CPython funktionieren aber problemlos mit PyPy, eine Liste ist auf einer [https://pypy.org/compat.html Webseite bei PyPy] {en} zu finden. Eine Anleitung, wie man Pakete für PyPy via [:pip:] installiert, ist ebenfalls in der [http://doc.pypy.org/en/latest/install.html#installing-more-modules offiziellen Dokumentation] {en} zu finden.

= Links =
 * [http://doc.pypy.org/en/latest/cpython_differences.html technische Unterschiede] {en} von PyPy und CPython
 * [https://doc.pypy.org/en/latest/faq.html FAQ Seite] {en} von PyPy
 * [wikipedia_en:PyPy:englische Wikipedia Seite] zu PyPy, welcher unter anderem weitere technische Details und Informationen zur Geschichte von PyPy enthält

#tag: Programmierung, Python