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 dabeifind_program() -
Ein Pfad, z.B.
/usr/local/bin/python3.4m -
Einer von
python2oderpython3: In beiden Fällen versucht das Modul einige alternative Namen:py -2oderpy -3unter Windows undpythonü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 istrequiredauftruegesetzt und Meson wird abgebrochen, wenn keine Python-Installation gefunden werden kann. Wennrequiredauffalsegesetzt 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 einerfeature-Option an das Schlüsselwortargumentrequiredübergeben werden. -
disabler: Wenntrueund keine Python-Installation gefunden werden kann, wird anstelle eines nicht gefundenen Objekts eindisabler-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. Wennsubdiran diese Methode übergeben wird, wird es an diesen Speicherort angehängt. Dieses Schlüsselwortargument ist gegenseitig ausschließend mitinstall_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 vonpython.allow_limited_apigesetzt 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 definierenPyMODINIT_FUNCmit 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): Wenntrueund 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 infind_installation()angegebene Wert verwendet, andernfallstrue -
subdir: Siehe Dokumentation für das gleichnamige Argument von extension_module() -
install_tag(Seit 0.60.0): Ein String, der vom Befehlmeson install --tagsverwendet wird, um nur eine Teilmenge der Dateien zu installieren. Standardmäßig hat er das Tagpython-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