sysconfig — Pythonの構成情報へのアクセスを提供します—Pythonドキュメント
sysconfig —Pythonの構成情報へのアクセスを提供します
バージョン3.2の新機能。
ソースコード: :source: `Lib / sysconfig.py`
sysconfig モジュールは、インストールパスのリストや現在のプラットフォームに関連する構成変数などのPythonの構成情報へのアクセスを提供します。
構成変数
Pythonディストリビューションには、Makefile
ヘッダーファイルとpyconfig.h
ヘッダーファイルが含まれています。これらは、Pythonバイナリ自体と distutils を使用してコンパイルされたサードパーティのC拡張機能の両方をビルドするために必要です。
sysconfig は、これらのファイルで見つかったすべての変数を、 get_config_vars()または get_config_var()を使用してアクセスできる辞書に配置します。
Windowsでは、はるかに小さいセットであることに注意してください。
- sysconfig.get_config_vars(*args)
引数なしで、現在のプラットフォームに関連するすべての構成変数の辞書を返します。
引数を使用して、構成変数ディクショナリで各引数を検索した結果の値のリストを返します。
引数ごとに、値が見つからない場合は、
None
を返します。
- sysconfig.get_config_var(name)
単一の変数 name の値を返します。
get_config_vars().get(name)
と同等です。name が見つからない場合は、
None
を返します。
使用例:
>>> 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 またはDistutilsベースのシステムを使用してインストールされたすべての新しいコンポーネントは、同じスキームに従ってファイルを適切な場所にコピーします。
Pythonは現在、次の7つのスキームをサポートしています。
- posix_prefix :LinuxやmacOSなどのPOSIXプラットフォーム用のスキーム。 これは、Pythonまたはコンポーネントがインストールされるときに使用されるデフォルトのスキームです。
- posix_home :インストール時に home オプションが使用される場合に使用されるPOSIXプラットフォームのスキーム。 このスキームは、コンポーネントが特定のホームプレフィックスを使用してDistutilsを介してインストールされる場合に使用されます。
- posix_user :コンポーネントがDistutilsを介してインストールされ、 user オプションが使用される場合に使用されるPOSIXプラットフォームのスキーム。 このスキームは、ユーザーのホームディレクトリの下にあるパスを定義します。
- nt :WindowsなどのNTプラットフォーム用のスキーム。
- nt_user : user オプションが使用されている場合のNTプラットフォームのスキーム。
各スキーム自体は一連のパスで構成され、各パスには一意の識別子があります。 Pythonは現在、次の8つのパスを使用しています。
- stdlib :プラットフォーム固有ではない標準のPythonライブラリファイルを含むディレクトリ。
- platstdlib :プラットフォーム固有の標準Pythonライブラリファイルを含むディレクトリ。
- platlib :サイト固有、プラットフォーム固有のファイルのディレクトリ。
- purelib :サイト固有、非プラットフォーム固有のファイルのディレクトリ。
- include :プラットフォーム固有ではないヘッダーファイルのディレクトリ。
- platinclude :プラットフォーム固有のヘッダーファイルのディレクトリ。
- scripts :スクリプトファイルのディレクトリ。
- data :データファイルのディレクトリ。
sysconfig は、これらのパスを決定するためのいくつかの関数を提供します。
- sysconfig.get_scheme_names()
- sysconfig で現在サポートされているすべてのスキームを含むタプルを返します。
- sysconfig.get_default_scheme()
現在のプラットフォームのデフォルトのスキーム名を返します。
バージョン3.10で変更:この関数は以前は
_get_default_scheme()
という名前で、実装の詳細と見なされていました。
- sysconfig.get_preferred_scheme(key)
key で指定されたインストールレイアウトの優先スキーム名を返します。
キーは、
"prefix"
、"home"
、または"user"
のいずれかである必要があります。戻り値は、 get_scheme_names()にリストされているスキーム名です。 これは、 get_paths()などの schema 引数を取る sysconfig 関数に渡すことができます。
バージョン3.10の新機能。
- sysconfig._get_preferred_schemes()
現在のプラットフォームで優先されるスキーム名を含むdictを返します。 Pythonの実装者と再配布者は、
_INSTALL_SCHEMES
モジュールレベルのグローバル値に優先スキームを追加し、この関数を変更して、これらのスキーム名を次のように返すことができます。 システムおよび言語のパッケージマネージャーが使用するさまざまなスキームを提供するため、どちらかによってインストールされたパッケージが他方のパッケージと混ざり合うことはありません。エンドユーザーはこの関数を使用しないでください。代わりに get_default_scheme()および get_preferred_scheme()を使用してください。
バージョン3.10の新機能。
- sysconfig.get_path_names()
- sysconfig で現在サポートされているすべてのパス名を含むタプルを返します。
- sysconfig.get_path(name[, scheme[, vars[, expand]]])
schema という名前のインストールスキームから、パス name に対応するインストールパスを返します。
name は、 get_path_names()によって返されるリストの値である必要があります。
sysconfig は、プラットフォームごとに、展開する変数とともに、各パス名に対応するインストールパスを格納します。 たとえば、 nt スキームの stdlib パスは
{base}/Lib
です。get_path()は、 get_config_vars()によって返された変数を使用してパスを展開します。 すべての変数にはプラットフォームごとにデフォルト値があるため、この関数を呼び出してデフォルト値を取得できます。
schema が指定されている場合は、 get_scheme_names()によって返されるリストの値である必要があります。 それ以外の場合は、現在のプラットフォームのデフォルトスキームが使用されます。
vars が提供されている場合、 get_config_vars()によって返されるディクショナリを更新する変数のディクショナリである必要があります。
expand が
False
に設定されている場合、パスは変数を使用して展開されません。name が見つからない場合は、 KeyError を発生させます。
- sysconfig.get_paths([scheme[, vars[, expand]]])
インストールスキームに対応するすべてのインストールパスを含むディクショナリを返します。 詳細については、 get_path()を参照してください。
スキームが提供されていない場合、現在のプラットフォームのデフォルトスキームを使用します。
vars が提供されている場合、パスの拡張に使用されるディクショナリを更新する変数のディクショナリである必要があります。
expand がfalseに設定されている場合、パスは展開されません。
スキームが既存のスキームでない場合、 get_paths()は KeyError を発生させます。
その他の機能
- sysconfig.get_python_version()
MAJOR.MINOR
Pythonのバージョン番号を文字列として返します。'%d.%d' % sys.version_info[:2]
に似ています。
- sysconfig.get_platform()
現在のプラットフォームを識別する文字列を返します。
これは主に、プラットフォーム固有のビルドディレクトリとプラットフォーム固有のビルドされたディストリビューションを区別するために使用されます。 通常、OSの名前とバージョン、およびアーキテクチャ( 'os.uname()'によって提供される)が含まれますが、含まれる正確な情報はOSによって異なります。 たとえば、Linuxでは、カーネルバージョンは特に重要ではありません。
戻り値の例:
linux-i586
linux-alpha(?)
ソラリス-2.6-sun4u
Windowsは次のいずれかを返します。
win-amd64(AMD64上の64ビットWindows、別名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
のようなファイルを指すファイルのようなオブジェクトです。名前と値のペアを含む辞書が返されます。 オプションのディクショナリが2番目の引数として渡された場合、新しいディクショナリの代わりに使用され、ファイルで読み取られた値で更新されます。
- sysconfig.get_config_h_filename()
pyconfig.h
のパスを返します。
- sysconfig.get_makefile_filename()
Makefile
のパスを返します。
sysconfig をスクリプトとして使用する
sysconfig は、Pythonの -m オプションを使用してスクリプトとして使用できます。
$ 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()によって返される情報を標準出力に出力します。 ]。