Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの構成情報へのアクセス方法|sysconfigモジュールの使い方を解説

Pythonのインストールに関する構成情報(コンフィギュレーション情報)には、標準ライブラリのsysconfigモジュールを通じてアクセスできます。取得できる情報には、インストール先のパス一覧や、インストールされたプラットフォーム固有の設定変数などが含まれます。

sysconfigモジュールには構成変数へアクセスするための関数が複数用意されています。ここでは、主要な関数の使い方を順に解説します。

sysconfig.get_config_vars()

引数を付けずに呼び出すと、現在のプラットフォームに関連するすべての構成変数を辞書形式で返します。

>>> import sysconfig
>>> sysconfig.get_config_vars()
{'prefix': 'E:\\python37', 'exec_prefix': 'E:\\python37', 'py_version': '3.7.2', 'py_version_short': '3.7', 'py_version_nodot': '37', 'installed_base': 'E:\\python37', 'base': 'E:\\python37', 'installed_platbase': 'E:\\python37', 'platbase': 'E:\\python37', 'projectbase': 'E:\\python37', 'abiflags': '', 'LIBDEST': 'E:\\python37\\Lib', 'BINLIBDEST': 'E:\\python37\\Lib', 'INCLUDEPY': 'E:\\python37\\Include', 'EXT_SUFFIX': '.pyd', 'EXE': '.exe', 'VERSION': '37', 'BINDIR': 'E:\\python37', 'SO': '.pyd', 'userbase': 'C:\\Users\\acer\\AppData\\Roaming\\Python', 'srcdir': 'E:\\python37'}

引数を指定して呼び出すと、指定したキーに対応する値だけをリストで返します。存在しないキーを指定した場合、その位置にはNoneが返されます。

>>> sysconfig.get_config_vars('base','EXE')
['E:\\python37', '.exe']

sysconfig.get_config_var()

この関数は、単一の変数名に対応する値を1つだけ返します。動作はget_config_vars().get(name)と同等で、指定した名前が見つからない場合にはNoneを返します。

>>> sysconfig.get_config_var('VERSION')
'37'
>>> sysconfig.get_config_var('srcdir')
'E:\\python37'

Pythonでは、プラットフォームやインストール時のオプションに応じて異なる「インストールスキーム」が使用されます。現在サポートされているスキームは以下の5種類です。

スキーム名説明
posix_prefixLinuxやmacOSなどPOSIX系プラットフォーム向けのスキーム
posix_homePOSIX系プラットフォームで、インストール時にhomeオプションを指定した場合に使われるスキーム
posix_userPOSIX系プラットフォームで、Distutils経由のインストール時にuserオプションを指定した場合に使われるスキーム
ntWindowsなどNT系プラットフォーム向けのスキーム
nt_userNT系プラットフォームでuserオプションを指定した場合に使われるスキーム

get_path_names()

sysconfigが現在サポートしているすべてのパス名をタプルとして返します。

>>> sysconfig.get_path_names()
('stdlib', 'platstdlib', 'purelib', 'platlib', 'include', 'scripts', 'data')

各スキームは、一意な識別子を持つ複数のパスから構成されています。それぞれのパス名の意味は次のとおりです。

パス名説明
stdlibプラットフォームに依存しない標準ライブラリファイルが格納されるディレクトリ
platstdlibプラットフォーム固有の標準ライブラリファイルが格納されるディレクトリ
platlibサイト固有かつプラットフォーム固有のファイルを格納するディレクトリ
purelibサイト固有だがプラットフォームに依存しないファイルを格納するディレクトリ
includeプラットフォームに依存しないヘッダーファイルを格納するディレクトリ
platincludeプラットフォーム固有のヘッダーファイルを格納するディレクトリ
scriptsスクリプトファイルを格納するディレクトリ
dataデータファイルを格納するディレクトリ

get_path()

指定したインストールスキームの中から、パス名に対応する実際のインストールパスを返します。

>>> sysconfig.get_path('include')
'E:\\python37\\Include'

get_platform()

現在のプラットフォームを識別する文字列を返します。

>>> sysconfig.get_platform()
'win-amd64'

get_python_version()

「メジャー.マイナー」形式のPythonバージョン番号を文字列として返します(例:'3.7')。

さらに、sysconfigモジュールをコマンドラインから-mオプション付きで実行すると、構成変数とその値の一覧をまとめて確認できます。

E:\python37>python -m sysconfig
Platform: "win-amd64"
Python version: "3.7"
Current installation scheme: "nt"
Paths:
    data = "E:\python37"
    include = "E:\python37\Include"
    platinclude = "E:\python37\Include"
    platlib = "E:\python37\Lib\site-packages"
    platstdlib = "E:\python37\Lib"
    purelib = "E:\python37\Lib\site-packages"
    scripts = "E:\python37\Scripts"
    stdlib = "E:\python37\Lib"
Variables:
    BINDIR = "E:\python37"
    BINLIBDEST = "E:\python37\Lib"
    EXE = ".exe"
    EXT_SUFFIX = ".pyd"
    INCLUDEPY = "E:\python37\Include"
    LIBDEST = "E:\python37\Lib"
    SO = ".pyd"
    VERSION = "37"
    abiflags = ""
    base = "E:\python37"
    exec_prefix = "E:\python37"
    installed_base = "E:\python37"
    installed_platbase = "E:\python37"
    platbase = "E:\python37"
    prefix = "E:\python37"
    projectbase = "E:\python37"
    py_version = "3.7.2"
    py_version_nodot = "37"
    py_version_short = "3.7"
    srcdir = "E:\python37"
    userbase = "C:\Users\acer\AppData\Roaming\Python"

このようにsysconfigモジュールを活用すれば、Python環境の構成情報をプログラムから簡単に取得できます。ビルドツールやパッケージ管理ツールを開発する際などにぜひ活用してください。

  1. PythonでPOSTメソッドを使ってCGIプログラムに情報を渡す方法

    CGIプログラムへ情報を渡す方法としては、POSTメソッドの方が一般的により信頼性が高いとされています。POSTメソッドは、GETメソッドとまったく同じ形式でデータをパッケージ化しますが、URLの「?」以降にテキスト文字列として付加して送信するのではなく、独立したメッセージとして送り出す点が異なります。このメッセージは、標準入力(stdin)を通じてCGIスクリプトへ渡されます。POSTメソッドの主な特徴送信データがURLに表示されないため、GETメソッドよりも安全性が高いURLの長さ制限を受けないため、大量のデータも送信できるデータはリクエストボディに格納され、標準入力経由でCGIスクリプト

  2. PythonでGETメソッドを使用して情報を渡す方法【CGIプログラミング入門】

    GETメソッドとはGETメソッドは、エンコードされたユーザー情報をページリクエストに付加して送信する方式です。ページのURLとエンコードされた情報は「?」記号で区切られます。https://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2GETメソッドは、ブラウザからWebサーバーへ情報を渡す際のデフォルトの方法であり、送信した内容はブラウザのアドレスバー(Locationボックス)に長い文字列として表示されます。そのため、パスワードなどの機密情報をサーバーに送る場合には、GETメソッドは絶対に使用しないでください。また、GET