Python はさまざまな方法でコンパイルできます。Python がどのオプションでコンパイルされたかを知りたいです。
具体的なユースケース: 私の Python は readline でコンパイルされましたか? 「import readline」を実行することでこれを確認できることはわかっていますが、Python バイナリのコンパイル設定のリストを確認したいと考えています。
編集: Python 実行可能ファイルを意味し、自分で作成したソース コードではありません。
Python はさまざまな方法でコンパイルできます。Python がどのオプションでコンパイルされたかを知りたいです。
具体的なユースケース: 私の Python は readline でコンパイルされましたか? 「import readline」を実行することでこれを確認できることはわかっていますが、Python バイナリのコンパイル設定のリストを確認したいと考えています。
編集: Python 実行可能ファイルを意味し、自分で作成したソース コードではありません。
システム構成を表示するモジュールがあります
import sysconfig
print(sysconfig.get_config_vars())
個々の変数を取得するためのインターフェイスも提供します。
sysconfig.get_config_var('HAVE_LIBREADLINE')
シェルからもアクセスできます。
python3 -m sysconfig | less
編集:
python2.7より前では、使用する必要があります
import distutils.sysconfig
print distutils.sysconfig.get_config_vars()
ビルド中に実際に使用された構成フラグを見つけるために、mirk の回答に基づいてビルドするには、探している値はCONFIG_ARGS
.
たとえば、これは Ubuntu でコンパイルされた Python の出力です。
>>> print distutils.sysconfig.get_config_var('CONFIG_ARGS')
'--enable-shared' '--prefix=/usr' '--enable-ipv6'
'--enable-unicode=ucs4' '--with-dbmliborder=bdb:gdbm'
'--with-system-expat' '--with-system-ffi' '--with-fpe ctl'
'CC=x86_64-linux-gnu-gcc' 'CFLAGS=-D_FORTIFY_SOURCE=2 -g
-fstack-protector --param=ssp-buffer-size=4 -Wformat
-Werror=format-security ' 'LDFLAGS=-Wl,-Bs ymbolic-functions
-Wl,-z,relro'
そしてそれを行う別の方法... Pythonは、インストールされたバージョンごとにスクリプトを提供します...
ls -l /usr/bin/python*config*
16 Dec 21 2013 /usr/bin/python-config -> python2.7-config
16 Dec 21 2013 /usr/bin/python2-config -> python2.7-config
33 Mar 22 18:57 /usr/bin/python2.7-config -> x86_64-linux-gnu-python2.7-config
16 Mar 23 03:17 /usr/bin/python3-config -> python3.4-config
33 Apr 11 09:15 /usr/bin/python3.4-config -> x86_64-linux-gnu-python3.4-config
34 Apr 11 09:15 /usr/bin/python3.4m-config -> x86_64-linux-gnu-python3.4m-config
17 Mar 23 03:17 /usr/bin/python3m-config -> python3.4m-config
python3-config --help
Usage: /usr/bin/python3-config --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir
python3-config --prefix
/usr
私のシステムの1つからの答えは次のとおりです。
--prefix /usr
--exec-prefix /usr
--includes -I/usr/include/python3.4m -I/usr/include/python3.4m
--libs -lpthread -ldl -lutil -lm -lpython3.4m
--cflags -I/usr/include/python3.4m -I/usr/include/python3.4m -Wno-unused-result -Werror=declaration-after-statement -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes
--ldflags -L/usr/lib/python3.4/config-3.4m-x86_64-linux-gnu -L/usr/lib -lpthread -ldl -lutil -lm -lpython3.4m -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions
--extension-suffix @SO@
--abiflags m
--configdir /usr/lib/python3.4/config-3.4m-x86_64-linux-gnu
したがって、bash スクリプトなどの値を設定する必要がある場合、これらはこのコマンド ライン ユーティリティで利用できます。