sysconfig
--- Python の構成情報にアクセスする¶
バージョン 3.2 で追加.
ソースコード: Lib/sysconfig.py
sysconfig
モジュールは、インストールパスのリストや、現在のプラットフォームに関連した構成などの、Python の構成情報 (configuration information) へのアクセスを提供します。
構成変数¶
Python の配布物は、Python 自体のバイナリや、distutils
によってコンパイルされる外部の C 拡張をビルドするために必要な、Makefile
と pyconfig.h
ヘッダーファイルを含んでいます。
sysconfig
はこれらのファイルに含まれるすべての変数を辞書に格納し、get_config_vars()
や get_config_var()
でアクセスできるようにします。
Windows では構成変数はだいぶ少なくなります。
-
sysconfig.
get_config_vars
(*args)¶ 引数がない場合、現在のプラットフォームに関するすべての構成変数の辞書を返します。
引数がある場合、各引数を構成変数辞書から検索した結果の変数のリストを返します。
各引数において、変数が見つからなかった場合は
None
が返されます。
-
sysconfig.
get_config_var
(name)¶ 1つの変数 name を返します。
get_config_vars().get(name)
と同じです。name が見つからない場合、
None
を返します。
Example of usage:
>>> import sysconfig
>>> sysconfig.get_config_var('Py_ENABLE_SHARED')
0
>>> sysconfig.get_config_var('LIBDIR')
'/usr/local/lib'
>>> sysconfig.get_config_vars('AR', 'CXX')
['ar', 'g++']
インストールパス¶
Python はプラットフォームとインストールオプションによって、異なるインストールスキームを利用します。このスキームは、os.name
の値に基づいてユニークな識別子で sysconfig
に格納されます。
distutils
やそれに基づいたシステムによって新しいコンポーネントをインストールするときは、同じスキームに従ってファイルを正しい場所にコピーします。
Python currently supports six schemes:
posix_prefix: Linux や macOS などの POSIX プラットフォーム用のスキームです。これは Python やコンポーネントをインストールするときに使われるデフォルトのスキームです。
posix_home: インストール時に home オプションが利用された場合における、POSIX プラットフォーム用のスキームです。このスキームはコンポーネントが Distutils に特定の home prefix を指定してインストールされたときに利用されます。
posix_user: Distutils に user オプションを指定してコンポーネントをインストールするときに使われる、POSIX プラットフォーム用のスキームです。このスキームはユーザーのホームディレクトリ以下に配置されたパスヲ定義します。
nt: Windows などの NT プラットフォーム用のスキームです。
nt_user: user オプションが利用された場合の、NT プラットフォーム用のスキームです。
osx_framework_user オプションが利用された場合の、macOS 用のスキームです。
各スキームは、ユニークな識別子を持ったいくつかのパスの集合から成っています。現在 Python は8つのパスを利用します:
stdlib: プラットフォーム非依存の、標準 Python ライブラリファイルを格納するディレクトリ.
platstdlib: プラットフォーム依存の、標準 Python ライブラリファイルを格納するディレクトリ.
platlib: プラットフォーム依存の、site ごとのファイルを格納するディレクトリ。
purelib: プラットフォーム非依存の、site ごとのファイルを格納するディレクトリ。
include: プラットフォーム非依存のヘッダーファイルを格納するディレクトリ。
platinclude: プラットフォーム依存の、ヘッダーファイルを格納するディレクトリ。
scripts: スクリプトファイルのためのディレクトリ。
data: データファイルのためのディレクトリ。
sysconfig
はこれらのパスを決定するためのいくつかの関数を提供しています。
-
sysconfig.
get_default_scheme
()¶ Return the default scheme name for the current platform.
バージョン 3.10 で追加: This function was previously named
_get_default_scheme()
and considered an implementation detail.
-
sysconfig.
get_preferred_scheme
(key)¶ Return a preferred scheme name for an installation layout specified by key.
key must be either
"prefix"
,"home"
, or"user"
.The return value is a scheme name listed in
get_scheme_names()
. It can be passed tosysconfig
functions that take a scheme argument, such asget_paths()
.バージョン 3.10 で追加.
-
sysconfig.
_get_preferred_schemes
()¶ Return a dict containing preferred scheme names on the current platform. Python implementers and redistributors may add their preferred schemes to the
_INSTALL_SCHEMES
module-level global value, and modify this function to return those scheme names, to e.g. provide different schemes for system and language package managers to use, so packages installed by either do not mix with those by the other.End users should not use this function, but
get_default_scheme()
andget_preferred_scheme()
instead.バージョン 3.10 で追加.
-
sysconfig.
get_path
(name[, scheme[, vars[, expand]]])¶ scheme で指定されたインストールスキームから、パス name に従ってインストールパスを返します。
name は
get_path_names()
が返すリストに含まれる値でなければなりません。sysconfig
はインストールパスを、パス名、プラットフォーム、展開される変数に従って格納します。例えば、nt スキームでの stdlib パスは{base}/Lib
になります。get_path()
はパスを展開するのにget_config_vars()
が返す変数を利用します。すべての変数は各プラットフォームにおいてデフォルト値を持っていて、この関数を呼び出したときにデフォルト値を取得する場合があります。scheme が指定された場合、
get_scheme_names()
が返すリストに含まれる値でなければなりません。指定されなかった場合は、現在のプラットフォームでのデフォルトスキームが利用されます。vars が指定された場合、
get_config_vars()
が返す辞書をアップデートする変数辞書でなければなりません。expand が
False
に設定された場合、パスは変数を使って展開されません。name が見つからない場合、
KeyError
を送出します。
-
sysconfig.
get_paths
([scheme[, vars[, expand]]])¶ インストールスキームに基づいたすべてのインストールパスを格納した辞書を返します。詳しい情報は
get_path()
を参照してください。scheme が指定されない場合、現在のプラットフォームでのデフォルトスキーマが使用されます。
vars を指定する場合、パスを展開するために使用される辞書を更新する値の辞書でなければなりません。
expand に偽を指定すると、パスは展開されません。
scheme が実在するスキームでなかった場合、
get_paths()
はKeyError
を発生させます。
その他の関数¶
-
sysconfig.
get_python_version
()¶ MAJOR.MINOR
の型の Python バージョン番号文字列を返します。'%d.%d' % sys.version_info[:2]
に似ています。
-
sysconfig.
get_platform
()¶ 現在のプラットフォームを識別するための文字列を返します。
これはプラットフォーム依存のビルドディレクトリやプラットフォーム依存の配布物を区別するために使われます。 典型的には、('os.uname()' のように) OSの名前とバージョン、アーキテクチャを含みますが、厳密にはOSに依存します。 例えば Linux ではカーネルのバージョンはそれほど重要ではありません。
返される値の例:
linux-i586
linux-alpha (?)
solaris-2.6-sun4u
Windows では以下のどれかを返します:
win-amd64 (64bit Windows on AMD64, 別名 x86_64, Intel64, EM64T)
win32 (その他すべて - 具体的には sys.platform が返す値)
macOS では以下のどれかを返します:
macosx-10.6-ppc
macosx-10.4-ppc64
macosx-10.3-i386
macosx-10.4-fat
その他の非 POSIX プラットフォームでは、現在のところ単に
sys.platform
を返します。
-
sysconfig.
is_python_build
()¶ 実行中の Python インタプリタがソースからビルドされ、かつそのビルドされた場所から実行されている場合に
True
を返します。make install
を実行した場所からの実行やバイナリインストーラによるインストールではいけません。
-
sysconfig.
parse_config_h
(fp[, vars])¶ config.h
スタイルのファイルを解析します。fp は
config.h
スタイルのファイルを指すファイルライクオブジェクトです。name/value ペアを格納した辞書を返します。第二引数にオプションの辞書が渡された場合、新しい辞書ではなくその辞書を利用し、ファイルから読み込んだ値で更新します。
-
sysconfig.
get_config_h_filename
()¶ pyconfig.h
のパスを返します。
-
sysconfig.
get_makefile_filename
()¶ Makefile
のパスを返します。
sysconfig
をスクリプトとして使う¶
Python の -m オプションを使えば、sysconfig
をスクリプトとして使用できます:
$ python -m sysconfig
Platform: "macosx-10.4-i386"
Python version: "3.2"
Current installation scheme: "posix_prefix"
Paths:
data = "/usr/local"
include = "/Users/tarek/Dev/svn.python.org/py3k/Include"
platinclude = "."
platlib = "/usr/local/lib/python3.2/site-packages"
platstdlib = "/usr/local/lib/python3.2"
purelib = "/usr/local/lib/python3.2/site-packages"
scripts = "/usr/local/bin"
stdlib = "/usr/local/lib/python3.2"
Variables:
AC_APPLE_UNIVERSAL_BUILD = "0"
AIX_GENUINE_CPLUSPLUS = "0"
AR = "ar"
ARFLAGS = "rc"
...
これは、get_platform()
、get_python_version()
、get_path()
および get_config_vars()
が返す情報を標準出力に出力します。