2012-04-17 26 views
42

Bạn có thể biên dịch Python theo nhiều cách khác nhau. Tôi muốn tìm ra các tùy chọn mà Python của tôi đã được biên dịch.Làm thế nào để có được danh sách các tùy chọn mà Python đã được biên dịch?

Trường hợp sử dụng bê tông: Python của tôi có được biên dịch với readline không? Tôi biết tôi có thể thấy điều này bằng cách làm "nhập khẩu readline", nhưng tôi muốn xem một danh sách các thiết lập biên dịch cho nhị phân Python của tôi.

Chỉnh sửa: Tôi có nghĩa là tệp thực thi Python và không phải là mã nguồn được viết bởi chính tôi.

+0

Bạn thường không làm việc với biên soạn bytecode python - thường bạn làm việc với các tập tin nguồn python. Điều này không thực sự có ý nghĩa quá nhiều, bạn có thể cho thêm một số ngữ cảnh không? –

+1

Lattyware: Tôi nghĩ OP có nghĩa là cách thực thi python được biên dịch, không phải bytecode của mô-đun – sinelaw

+0

sinelaw là chính xác, tôi có nghĩa là thực thi Python, được thêm vào cho rõ ràng –

Trả lời

43

Có một mô-đun để xem hệ thống cấu hình

import sysconfig 
print(sysconfig.get_config_vars()) 

Nó cung cấp một giao diện để có được biến cá nhân là tốt.

sysconfig.get_config_var('HAVE_LIBREADLINE') 

Edit:

trước python2.7, bạn phải sử dụng

import distutils.sysconfig 
print distutils.sysconfig.get_config_vars() 
+0

Tôi đang sử dụng python 2.7. Nó hoạt động ở đó là tốt. – mirk

+0

(vô tình xóa nhận xét ban đầu của tôi) Điều này hoạt động trên 3,2 và cao hơn (trong python 3) hoặc, dường như trên 2,7 và cao hơn (trong python 2). Dường như không hoạt động trên 2.6.7 – sinelaw

+0

cảm ơn của tôi, tôi đã cập nhật câu trả lời cho các phiên bản python trước đó. – mirk

21

Để xây dựng dựa trên câu trả lời của Mirk, để tìm những lá cờ cấu hình mà thực sự đã được sử dụng trong xây dựng, giá trị bạn đang tìm kiếm là CONFIG_ARGS.

Ví dụ, đây là đầu ra cho một Python Ubuntu-biên soạn:

>>> 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' 
8

Và một cách khác để làm điều đó ... Python cung cấp kịch bản cho mỗi phiên bản cài đặt ...

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 

Câu trả lời từ một trong các hệ thống của tôi là:

--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 @[email protected] 
--abiflags   m 
--configdir  /usr/lib/python3.4/config-3.4m-x86_64-linux-gnu 

Vì vậy, nếu bạn cần đặt giá trị cho bash scr ipts và như vậy, chúng có sẵn với tiện ích dòng lệnh này.

-2

Để có được danh sách các tùy chọn mà PyPy đã được biên soạn với, chạy

pypy --info 
+0

Đó không phải là câu hỏi của tôi. –

Các vấn đề liên quan