Python-Modul

Dieses Modul bietet Unterstützung für das Finden und Erstellen von Erweiterungen für Python-Installationen, sei es Python 2 oder 3.

Wenn Sie Python-Erweiterungsmodule mit Werkzeugen erstellen und verpacken möchten, die mit PEP-517 kompatibel sind, schauen Sie sich meson-python an.

Wenn Sie Python-Erweiterungsmodule für einen Python-Interpreter erstellen, der sich in einer venv- oder Conda-Umgebung befindet, möchten Sie wahrscheinlich python.install_venv=auto setzen; weitere Einzelheiten finden Sie unter Python-Moduloptionen.

Hinzugefügt 0.46.0

Funktionen

find_installation()

pymod.find_installation(name_or_path, ...)

Findet eine Python-Installation, die mit name_or_path übereinstimmt.

Dieses Argument ist optional. Wenn es nicht angegeben wird, ist die zurückgegebene Python-Installation diejenige, die zum Ausführen von Meson verwendet wird.

Wenn angegeben, kann es sein

  • Ein einfacher Name, z.B. python-2.7. Meson sucht nach einem externen Programm mit diesem Namen und verwendet dabei find_program()

  • Ein Pfad, z.B. /usr/local/bin/python3.4m

  • Einer von python2 oder python3: In beiden Fällen versucht das Modul einige alternative Namen: py -2 oder py -3 unter Windows und python überall. Im letzteren Fall prüft es, ob die vom Sysconfig-Modul bereitgestellte Version mit der erforderlichen Hauptversion übereinstimmt.

    Seit 1.2.0 funktioniert die Suche nach der Nebenversion (z.B. python3.11) auch unter Windows.

Schlüsselwortargumente sind die folgenden

  • required: Standardmäßig ist required auf true gesetzt und Meson wird abgebrochen, wenn keine Python-Installation gefunden werden kann. Wenn required auf false gesetzt ist, fährt Meson fort, auch wenn keine Python-Installation gefunden wurde. Sie können dann die Methode .found() für das zurückgegebene Objekt verwenden, um zu prüfen, ob es gefunden wurde oder nicht. Seit 0.48.0 kann auch der Wert einer feature-Option an das Schlüsselwortargument required übergeben werden.
  • disabler: Wenn true und keine Python-Installation gefunden werden kann, wird anstelle eines nicht gefundenen Objekts ein disabler-Objekt zurückgegeben. Seit 0.49.0
  • modules: Eine Liste von Modulnamen, die diese Python-Installation haben muss. Seit 0.51.0
  • pure: Auf einigen Plattformen werden architekturunabhängige Dateien in einem separaten Verzeichnis erwartet. Wenn jedoch die Python-Quellen zusammen mit einer Erweiterung, die mit diesem Modul erstellt wurde, installiert werden sollen, kann dieses Schlüsselwortargument verwendet werden, um das Standardverhalten von .install_sources() zu überschreiben. Seit 0.64.0

Gibt zurück: eine Python-Installation

python_installation-Objekt

Das python_installation-Objekt ist ein external_program mit mehreren hinzugefügten Methoden.

Methoden

path()

str py_installation.path()

Hinzugefügt 0.50.0

Funktioniert wie die path-Methode anderer ExternalProgram-Objekte. Vor 0.50.0 aufgrund eines Fehlers nicht vorhanden.

extension_module()

shared_module py_installation.extension_module(module_name, list_of_sources, ...)

Erstellt ein shared_module()-Ziel, das gemäß den Namenskonventionen der Zielplattform benannt ist.

Alle positionsbezogenen und schlüsselwortbasierten Argumente sind die gleichen wie für shared_module(), mit Ausnahme von name_suffix und name_prefix, und mit den folgenden Ergänzungen

  • subdir: Standardmäßig installiert Meson das Erweiterungsmodul an der entsprechenden oberen Stelle für die Python-Installation, z.B. /usr/lib/site-packages. Wenn subdir an diese Methode übergeben wird, wird es an diesen Speicherort angehängt. Dieses Schlüsselwortargument ist gegenseitig ausschließend mit install_dir
  • limited_api: Seit 1.3.0 Ein String, der die Python-Version der Py_LIMITED_API enthält, auf die die Erweiterung abzielt. Zum Beispiel '3.7', um die Limited-API-Version von Python 3.7 zu nutzen. Dieses Verhalten kann deaktiviert werden, indem der Wert von python.allow_limited_api gesetzt wird. Siehe Python-Moduloptionen.

Zusätzlich weichen die folgenden Punkte vom Standardverhalten von shared_module() ab

  • gnu_symbol_visibility: Wenn nicht gesetzt, ist der Standardwert 'hidden' für Versionen von Python, die dies unterstützen (die Python-Header definieren PyMODINIT_FUNC mit Standard-Sichtbarkeit).

Beachten Sie, dass Cython-Support extension_module verwendet. Siehe die Referenz für Cython.

Seit 0.63.0 extension_module fügt automatisch eine Abhängigkeit zur Bibliothek hinzu, wenn keine explizit angegeben ist. Zur Unterstützung älterer Versionen muss der Benutzer möglicherweise dependencies : py_installation.dependency() hinzufügen. Siehe dependency().

Gibt zurück: ein build_tgt-Objekt

dependency()

python_dependency py_installation.dependency(...)

Seit 0.53.0

Diese Methode akzeptiert keine positionsbezogenen Argumente und dieselben schlüsselwortbasierten Argumente wie die Standardfunktion dependency(). Sie unterstützt auch das folgende schlüsselwortbasierte Argument

  • embed: (Seit 0.53.0) Wenn wahr, versucht Meson, eine Python-Abhängigkeit zu finden, die zum Einbetten von Python in eine Anwendung verwendet werden kann.
  • disabler (Seit 0.60.0): Wenn true und die Abhängigkeit nicht gefunden werden konnte, wird anstelle einer nicht gefundenen Abhängigkeit ein Disabler-Objekt zurückgegeben.

Gibt zurück: eine Python-Abhängigkeit

install_sources()

void py_installation.install_sources(list_of_files, ...)

Installiert tatsächliche Python-Quellen (.py).

Alle positionsbezogenen und schlüsselwortbasierten Argumente sind die gleichen wie für install_data(), mit den folgenden Ergänzungen

Seit 0.60.0 Die Optionen python.platlibdir und python.purelibdir können zur Steuerung des Standardinstallationspfads verwendet werden. Siehe Python-Moduloptionen.

  • pure: Auf einigen Plattformen werden architekturunabhängige Dateien in einem separaten Verzeichnis erwartet. Wenn jedoch die Python-Quellen zusammen mit einer Erweiterung, die mit diesem Modul erstellt wurde, installiert werden sollen, kann dieses Schlüsselwortargument verwendet werden, um dieses Verhalten zu überschreiben. Standardmäßig wird der in find_installation() angegebene Wert verwendet, andernfalls true

  • subdir: Siehe Dokumentation für das gleichnamige Argument von extension_module()

  • install_tag (Seit 0.60.0): Ein String, der vom Befehl meson install --tags verwendet wird, um nur eine Teilmenge der Dateien zu installieren. Standardmäßig hat er das Tag python-runtime.

get_install_dir()

string py_installation.get_install_dir(...)

Ruft das Verzeichnis ab, in das install_sources() installieren wird.

Dies kann in Fällen nützlich sein, in denen install_sources nicht direkt verwendet werden kann, zum Beispiel bei der Verwendung von configure_file().

Diese Funktion akzeptiert keine Argumente, ihre schlüsselwortbasierten Argumente sind die gleichen wie bei install_sources().

Seit 0.60.0 Die Optionen python.platlibdir und python.purelibdir können zur Steuerung des Standardinstallationspfads verwendet werden. Siehe Python-Moduloptionen.

Gibt zurück: Einen String

language_version()

string py_installation.language_version()

Ruft die Haupt.Nebenversion von Python ab, z.B. 2.7.

Die Version wird über das sysconfig-Modul bezogen.

Diese Funktion erwartet keine Argumente oder schlüsselwortbasierten Argumente.

Gibt zurück: Einen String

get_path()

string py_installation.get_path(path_name, fallback)

Ruft einen Pfad ab, wie er vom sysconfig-Modul definiert wird.

Zum Beispiel

purelib = py_installation.get_path('purelib')

Diese Funktion erfordert mindestens ein Argument, path_name, das eine nicht leere Zeichenkette sein muss.

Wenn fallback angegeben ist, wird es zurückgegeben, wenn kein Pfad mit dem angegebenen Namen existiert. Andernfalls führt der Versuch, einen nicht existierenden Pfad zu lesen, zu einem fatalen Fehler.

Gibt zurück: Einen String

has_path()

    bool py_installation.has_path(path_name)

Gibt zurück: true, wenn ein Pfad mit dem Namen path_name mit get_path() abgerufen werden kann, andernfalls false.

get_variable()

string py_installation.get_variable(variable_name, fallback)

Ruft eine Variable ab, wie sie vom sysconfig-Modul definiert wird.

Zum Beispiel

py_bindir = py_installation.get_variable('BINDIR', '')

Diese Funktion erfordert mindestens ein Argument, variable_name, das eine nicht leere Zeichenkette sein muss.

Wenn fallback angegeben ist, wird es zurückgegeben, wenn keine Variable mit dem angegebenen Namen existiert. Andernfalls führt der Versuch, eine nicht existierende Variable zu lesen, zu einem fatalen Fehler.

Gibt zurück: Einen String

has_variable()

    bool py_installation.has_variable(variable_name)

Gibt zurück: true, wenn eine Variable mit dem Namen variable_name mit get_variable() abgerufen werden kann, andernfalls false.

python_dependency-Objekt

Diese Unterklasse des dep-Objekts versucht verschiedene Methoden, um Compiler- und Linker-Argumente zu erhalten, beginnend mit pkg-config und möglicherweise unter Verwendung von Informationen aus dem sysconfig-Modul von Python.

Sie bietet dieselben Methoden wie ihre Elternklasse.

Die Ergebnisse der Suche sind