반응형
파이썬이 컴파일 된 옵션 목록을 얻는 방법은 무엇입니까?
다양한 방법으로 Python을 컴파일 할 수 있습니다. 내 파이썬이 어떤 옵션으로 컴파일되었는지 알고 싶습니다.
구체적인 사용 사례 : 내 Python이 readline으로 컴파일 되었습니까? "import readline"을 수행하여 이것을 볼 수 있다는 것을 알고 있지만 Python 바이너리에 대한 컴파일 설정 목록을보고 싶습니다.
편집 : 나는 Python 실행 파일을 의미하며 내가 작성한 소스 코드가 아닙니다 .
시스템 구성을 볼 수있는 모듈이 있습니다.
import sysconfig
print(sysconfig.get_config_vars())
개별 변수를 가져 오는 인터페이스도 제공합니다.
sysconfig.get_config_var('HAVE_LIBREADLINE')
편집하다:
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
내 시스템 중 하나의 답변은 다음과 같습니다.
--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 스크립트 등에 대한 설정 값이 필요한 경우이 명령 줄 유틸리티에서 사용할 수 있습니다.
다음은 다른 파이썬 구성을 비교하는 데 사용하는 명령입니다. 여기에는 출력 값 가져 오기가 포함됩니다.
$ python3.6 -c "import sysconfig;print('{}'.format('\n'.join(['{} = {}'.format(v, sysconfig.get_config_var(v)) for v in sorted(sysconfig.get_config_vars(), key=lambda s: s.lower())])))" > /tmp/python36.conf
$ python2.7 -c "import sysconfig;print('{}'.format('\n'.join(['{} = {}'.format(v, sysconfig.get_config_var(v)) for v in sorted(sysconfig.get_config_vars(), key=lambda s: s.lower())])))" > /tmp/python27.conf
$ sdiff /tmp/python36.conf /tmp/python27.conf
$ # This is my own version of colorized side-by-side diff from
$ # https://github.com/jlinoff/csdiff
$ csdiff /tmp/python36.conf /tmp/python27.conf
(이것은 참고 용입니다)
BTW, PyPy 가 컴파일 된 옵션 목록을 얻으려면 다음을 실행하십시오.
pypy --info
반응형
'developer tip' 카테고리의 다른 글
잭슨 : 부동산이 없으면 어떻게 되나요? (0) | 2020.12.12 |
---|---|
Bash에서 '['뒤와 ']'앞에 공백이 있어야하는 이유는 무엇입니까? (0) | 2020.12.12 |
'+'(하나 이상의 발생)가 'sed'명령과 함께 작동하지 않습니다. (0) | 2020.12.12 |
Flask와 번들로 제공되는 서버는 프로덕션에서 사용하기에 안전한가요? (0) | 2020.12.12 |
SQL 성능 UNION 대 OR (0) | 2020.12.12 |