Pythonモジュール

このモジュールは、Python 2または3のインストールに対して拡張機能を見つけて構築するためのサポートを提供します。

PEP-517と互換性のあるツールを使用してPython拡張モジュールをビルドおよびパッケージ化する場合は、meson-pythonを確認してください。

venvまたはConda環境にあるPythonインタプリタに対してPython拡張モジュールをビルドしている場合は、python.install_venv=autoを設定することをお勧めします。詳細については、Pythonモジュールオプションを参照してください。

0.46.0で追加

関数

find_installation()

pymod.find_installation(name_or_path, ...)

name_or_pathに一致するPythonインストールを見つけます。

この引数はオプションです。指定しない場合、返されるPythonインストールは、Mesonを実行するために使用されるものになります。

指定する場合、次のいずれかを指定できます。

  • 単純な名前(例:python-2.7)。Mesonは、find_program()を使用して、その名前の外部プログラムを探します。

  • パス(例:/usr/local/bin/python3.4m

  • python2またはpython3のいずれか。どちらの場合も、モジュールはいくつかの代替名を試します。Windowsではpy -2またはpy -3、それ以外の場所ではpythonです。後者の場合、sysconfigモジュールによって提供されるバージョンが、必要なメジャーバージョンと一致するかどうかを確認します。

    1.2.0以降、マイナーバージョン(例:python3.11)の検索もWindowsで機能します。

キーワード引数は次のとおりです。

  • required:デフォルトでは、requiredtrueに設定されており、Pythonインストールが見つからない場合、Mesonは中止します。requiredfalseに設定されている場合、MesonはPythonインストールが見つからなくても続行します。次に、返されたオブジェクトで.found()メソッドを使用して、見つかったかどうかを確認できます。0.48.0以降featureオプションの値も、requiredキーワード引数に渡すことができます。
  • disablertrueで、Pythonインストールが見つからない場合、見つからないオブジェクトの代わりにdisablerオブジェクトを返します。0.49.0以降
  • modules:このPythonインストールが持っている必要があるモジュール名のリスト。0.51.0以降
  • pure:一部のプラットフォームでは、アーキテクチャに依存しないファイルは別のディレクトリに配置されることが想定されています。ただし、Pythonソースをこのモジュールで構築された拡張モジュールとともにインストールする場合は、このキーワード引数を使用して、.install_sources()のデフォルトの動作をオーバーライドできます。0.64.0以降

戻り値Pythonインストール

python_installationオブジェクト

python_installationオブジェクトは、いくつかのメソッドが追加されたexternal_programです。

メソッド

path()

str py_installation.path()

0.50.0で追加

他のExternalProgramオブジェクトのpathメソッドのように機能します。バグのため、0.50.0より前には提供されていませんでした。

extension_module()

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

ターゲットプラットフォームの命名規則に従って名前が付けられたshared_module()ターゲットを作成します。

すべての位置引数とキーワード引数は、name_suffixname_prefixを除き、shared_module()と同じであり、さらに以下が追加されています。

  • subdir:デフォルトでは、Mesonは拡張モジュールを、Pythonインストールに関連する最上位の場所(例:/usr/lib/site-packages)にインストールします。subdirがこのメソッドに渡されると、その場所に追加されます。このキーワード引数は、install_dirと相互に排他的です。
  • limited_api1.3.0以降、拡張機能が対象とするPy_LIMITED_APIのPythonバージョンを含む文字列。たとえば、Python 3.7の限定APIのバージョンを対象とする場合は '3.7'です。この動作は、python.allow_limited_apiの値を設定することで無効にできます。Pythonモジュールオプションを参照してください。

さらに、以下はshared_module()のデフォルトの動作と異なります。

  • gnu_symbol_visibility:設定されていない場合、これをサポートするPythonのバージョンでは'hidden'がデフォルトになります(PythonヘッダーはPyMODINIT_FUNCがデフォルトの可視性を持つように定義しています)。

Cythonのサポートはextension_moduleを使用することに注意してください。Cythonのリファレンスを参照してください。

0.63.0以降extension_moduleは、ライブラリが明示的に提供されていない場合、自動的にライブラリへの依存関係を追加します。古いバージョンをサポートするには、ユーザーはdependencies : py_installation.dependency()を追加する必要がある場合があります。dependency()を参照してください。

戻り値build_tgtオブジェクト

dependency()

python_dependency py_installation.dependency(...)

0.53.0以降

このメソッドは位置引数を受け入れず、標準のdependency()関数と同じキーワード引数を受け入れます。また、次のキーワード引数もサポートします。

  • embed(0.53.0以降)trueの場合、MesonはアプリケーションにPythonを埋め込むために使用できるPython依存関係を見つけようとします。
  • disabler (0.60.0以降)trueで、依存関係が見つからない場合は、見つからない依存関係の代わりにdisablerオブジェクトを返します。

戻り値Python依存関係

install_sources()

void py_installation.install_sources(list_of_files, ...)

実際のPythonソース(.py)をインストールします。

すべての位置引数とキーワード引数は、install_data()と同じであり、さらに以下が追加されています。

0.60.0以降python.platlibdirおよびpython.purelibdirオプションを使用して、デフォルトのインストールパスを制御できます。Pythonモジュールオプションを参照してください。

  • pure:一部のプラットフォームでは、アーキテクチャに依存しないファイルは別のディレクトリに配置されることが想定されています。ただし、Pythonソースをこのモジュールで構築された拡張モジュールとともにインストールする場合は、このキーワード引数を使用して、その動作をオーバーライドできます。デフォルトは、find_installation()で指定された値か、trueです。

  • subdirextension_module()への同じ名前の引数のドキュメントを参照してください。

  • install_tag (0.60.0以降):ファイルのサブセットのみをインストールするために、meson install --tagsコマンドで使用される文字列。デフォルトでは、python-runtimeタグが付いています。

get_install_dir()

string py_installation.get_install_dir(...)

install_sources()がインストールするディレクトリを取得します。

これは、たとえばconfigure_file()を使用する場合など、install_sourcesを直接使用できない場合に役立ちます。

この関数は引数を受け入れず、そのキーワード引数はinstall_sources()と同じです。

0.60.0以降python.platlibdirおよびpython.purelibdirオプションを使用して、デフォルトのインストールパスを制御できます。Pythonモジュールオプションを参照してください。

戻り値:文字列

language_version()

string py_installation.language_version()

メジャーとマイナーのPythonバージョン(例:2.7)を取得します。

バージョンは、sysconfigモジュールを通じて取得されます。

この関数は、引数またはキーワード引数を予期しません。

戻り値:文字列

get_path()

string py_installation.get_path(path_name, fallback)

sysconfigモジュールで定義されているパスを取得します。

例:

purelib = py_installation.get_path('purelib')

この関数には、少なくとも1つの引数path_nameが必要です。これは、空でない文字列である必要があります。

fallbackが指定されている場合は、指定された名前のパスが存在しない場合に返されます。それ以外の場合は、存在しないパスを読み取ろうとすると、致命的なエラーが発生します。

戻り値:文字列

has_path()

    bool py_installation.has_path(path_name)

戻り値path_nameという名前のパスをget_path()で取得できる場合はtrue、それ以外の場合はfalse。

get_variable()

string py_installation.get_variable(variable_name, fallback)

sysconfigモジュールで定義されている変数取得します。

例:

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

この関数には、少なくとも1つの引数variable_nameが必要です。これは、空でない文字列である必要があります。

fallbackが指定されている場合は、指定された名前の変数がない場合に返されます。それ以外の場合は、存在しない変数を読み取ろうとすると、致命的なエラーが発生します。

戻り値:文字列

has_variable()

    bool py_installation.has_variable(variable_name)

戻り値variable_nameという名前の変数をget_variable()で取得できる場合はtrue、それ以外の場合はfalse。

python_dependencyオブジェクト

このdepオブジェクトサブクラスは、pkg-configから開始し、Pythonのsysconfigモジュールから取得した情報を使用する可能性のある、コンパイラとリンカーの引数を取得するためのさまざまなメソッドを試します。

親クラスと同じメソッドを公開します。

検索の結果は次のとおりです。