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
:デフォルトでは、required
はtrue
に設定されており、Pythonインストールが見つからない場合、Mesonは中止します。required
がfalse
に設定されている場合、MesonはPythonインストールが見つからなくても続行します。次に、返されたオブジェクトで.found()
メソッドを使用して、見つかったかどうかを確認できます。0.48.0以降、feature
オプションの値も、required
キーワード引数に渡すことができます。 -
disabler
:true
で、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_suffix
とname_prefix
を除き、shared_module()
と同じであり、さらに以下が追加されています。
-
subdir
:デフォルトでは、Mesonは拡張モジュールを、Pythonインストールに関連する最上位の場所(例:/usr/lib/site-packages
)にインストールします。subdirがこのメソッドに渡されると、その場所に追加されます。このキーワード引数は、install_dir
と相互に排他的です。 -
limited_api
:1.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
です。 -
subdir
:extension_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
モジュールから取得した情報を使用する可能性のある、コンパイラとリンカーの引数を取得するためのさまざまなメソッドを試します。
親クラスと同じメソッドを公開します。
検索の結果は次のとおりです。