sysconfig --- Cung cấp quyền truy cập vào thông tin cấu hình của Python¶
Added in version 3.2.
Source code: Lib/sysconfig
Mô-đun sysconfig cung cấp quyền truy cập vào thông tin cấu hình của Python như danh sách đường dẫn cài đặt và các biến cấu hình phù hợp với nền tảng hiện tại.
Biến cấu hình¶
Bản phân phối Python chứa tệp tiêu đề Makefile và pyconfig.h cần thiết để xây dựng cả chính tệp nhị phân Python và tiện ích mở rộng C của bên thứ ba được biên dịch bằng setuptools.
sysconfig đặt tất cả các biến được tìm thấy trong các tệp này vào một từ điển có thể được truy cập bằng get_config_vars() hoặc get_config_var().
Lưu ý rằng trên Windows, đó là một bộ nhỏ hơn nhiều.
- sysconfig.get_config_vars(*args)¶
Không có đối số, hãy trả về từ điển gồm tất cả các biến cấu hình có liên quan đến nền tảng hiện tại.
Với các đối số, trả về danh sách các giá trị có được từ việc tra cứu từng đối số trong từ điển biến cấu hình.
Đối với mỗi đối số, nếu không tìm thấy giá trị, hãy trả về
None.
- sysconfig.get_config_var(name)¶
Trả về giá trị của một biến duy nhất name. Tương đương với
get_config_vars().get(name).Nếu không tìm thấy name, hãy trả về
None.
Ví dụ về cách sử dụng:
>>> nhập cấu hình hệ thống
>>> sysconfig.get_config_var('Py_ENABLE_SHARED')
0
>>> sysconfig.get_config_var('LIBDIR')
'/usr/local/lib'
>>> sysconfig.get_config_vars('AR', 'CXX')
['ar', 'g++']
Đường dẫn cài đặt¶
Python sử dụng sơ đồ cài đặt khác nhau tùy thuộc vào nền tảng và các tùy chọn cài đặt. Các lược đồ này được lưu trữ trong sysconfig dưới các mã định danh duy nhất dựa trên giá trị được trả về bởi os.name. Các lược đồ này được người cài đặt gói sử dụng để xác định nơi sao chép tệp vào.
Python hiện hỗ trợ chín lược đồ:
posix_prefix: lược đồ dành cho các nền tảng POSIX như Linux hoặc macOS. Đây là lược đồ mặc định được sử dụng khi cài đặt Python hoặc một thành phần.
posix_home: sơ đồ dành cho nền tảng POSIX, khi sử dụng tùy chọn home. Lược đồ này xác định các đường dẫn nằm dưới tiền tố nhà cụ thể.
posix_user: sơ đồ dành cho nền tảng POSIX, khi sử dụng tùy chọn user. Lược đồ này xác định các đường dẫn nằm trong thư mục chính của người dùng (
site.USER_BASE).posix_venv: sơ đồ dành cho
Python virtual environmentstrên nền tảng POSIX; theo mặc định nó giống như posix_prefix.nt: sơ đồ dành cho Windows. Đây là lược đồ mặc định được sử dụng khi cài đặt Python hoặc một thành phần.
nt_user: lược đồ dành cho Windows, khi sử dụng tùy chọn user.
nt_venv: lược đồ cho
Python virtual environmentstrên Windows; theo mặc định nó giống như nt.venv: lược đồ có các giá trị từ posix_venv hoặc nt_venv tùy thuộc vào nền tảng Python chạy trên đó.
osx_framework_user: lược đồ dành cho macOS, khi sử dụng tùy chọn user.
Mỗi lược đồ bao gồm một loạt các đường dẫn và mỗi đường dẫn có một mã định danh duy nhất. Python hiện đang sử dụng tám đường dẫn:
stdlib: thư mục chứa các tệp thư viện Python tiêu chuẩn không dành riêng cho nền tảng.
platstdlib: thư mục chứa các tệp thư viện Python tiêu chuẩn dành riêng cho nền tảng.
platlib: thư mục dành cho các tệp dành riêng cho trang web, nền tảng cụ thể.
purelib: thư mục dành cho các tệp dành riêng cho trang web, không dành riêng cho nền tảng (Python 'thuần túy').
include: thư mục chứa các tệp tiêu đề không dành riêng cho nền tảng cho Python C-API.
platinclude: thư mục chứa các tệp tiêu đề dành riêng cho nền tảng cho Python C-API.
scripts: thư mục chứa file script.
data: thư mục chứa file dữ liệu.
Lược đồ người dùng¶
Lược đồ này được thiết kế để trở thành giải pháp thuận tiện nhất cho người dùng không có quyền ghi vào thư mục gói trang web toàn cầu hoặc không muốn cài đặt vào đó.
Các tập tin sẽ được cài đặt vào thư mục con của site.USER_BASE (sau đây viết là userbase). Lược đồ này cài đặt các mô-đun Python thuần túy và các mô-đun mở rộng ở cùng một vị trí (còn được gọi là site.USER_SITE).
posix_user¶
Đường dẫn |
Thư mục cài đặt |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
data |
|
nt_user¶
Đường dẫn |
Thư mục cài đặt |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
data |
|
osx_framework_user¶
Đường dẫn |
Thư mục cài đặt |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
scripts |
|
data |
|
Đề án nhà¶
Ý tưởng đằng sau "sơ đồ gia đình" là bạn xây dựng và duy trì một kho mô-đun Python cá nhân. Tên của lược đồ này bắt nguồn từ ý tưởng về thư mục "home" trên Unix, vì không có gì lạ khi người dùng Unix tạo thư mục chính của họ có bố cục tương tự như /usr/ hoặc /usr/local/. Bất kỳ ai cũng có thể sử dụng lược đồ này, bất kể họ đang cài đặt hệ điều hành nào.
posix_home¶
Đường dẫn |
Thư mục cài đặt |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
data |
|
Lược đồ tiền tố¶
"Lược đồ tiền tố" rất hữu ích khi bạn muốn sử dụng một bản cài đặt Python để thực hiện quá trình xây dựng/cài đặt (tức là để chạy tập lệnh thiết lập), nhưng cài đặt các mô-đun vào thư mục mô-đun bên thứ ba của một bản cài đặt Python khác (hoặc thứ gì đó trông giống như một bản cài đặt Python khác). Nếu điều này nghe có vẻ hơi bất thường thì đó là---đó là lý do tại sao các chương trình dành cho người dùng và gia đình lại xuất hiện trước. Tuy nhiên, có ít nhất hai trường hợp đã biết trong đó sơ đồ tiền tố sẽ hữu ích.
Đầu tiên, hãy xem xét rằng nhiều bản phân phối Linux đặt Python trong /usr, thay vì /usr/local truyền thống hơn. Điều này hoàn toàn phù hợp, vì trong những trường hợp đó Python là một phần của "hệ thống" chứ không phải là một tiện ích bổ sung cục bộ. Tuy nhiên, nếu bạn đang cài đặt các mô-đun Python từ nguồn, bạn có thể muốn chúng ở dạng /usr/local/lib/python2.X thay vì /usr/lib/python2.X.
Một khả năng khác là hệ thống tệp mạng trong đó tên được sử dụng để ghi vào thư mục từ xa khác với tên được sử dụng để đọc nó: ví dụ: trình thông dịch Python được truy cập dưới dạng /usr/local/bin/python có thể tìm kiếm các mô-đun trong /usr/local/lib/python2.X, nhưng các mô-đun đó sẽ phải được cài đặt vào /mnt/@server/export/lib/python2.X.
posix_prefix¶
Đường dẫn |
Thư mục cài đặt |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
data |
|
nt¶
Đường dẫn |
Thư mục cài đặt |
|---|---|
stdlib |
|
platstdlib |
|
platlib |
|
purelib |
|
include |
|
platinclude |
|
scripts |
|
data |
|
Chức năng đường dẫn cài đặt¶
sysconfig cung cấp một số chức năng để xác định các đường dẫn cài đặt này.
- sysconfig.get_scheme_names()¶
Trả về một bộ chứa tất cả các lược đồ hiện được hỗ trợ trong
sysconfig.
- sysconfig.get_default_scheme()¶
Trả về tên lược đồ mặc định cho nền tảng hiện tại.
Added in version 3.10: Chức năng này trước đây được đặt tên là
_get_default_scheme()và được coi là một chi tiết triển khai.Thay đổi trong phiên bản 3.11: Khi Python chạy từ môi trường ảo, lược đồ venv sẽ được trả về.
- sysconfig.get_preferred_scheme(key)¶
Trả về tên lược đồ ưa thích cho bố cục cài đặt được chỉ định bởi key.
key phải là
"prefix","home"hoặc"user".Giá trị trả về là tên lược đồ được liệt kê trong
get_scheme_names(). Nó có thể được chuyển tới các hàmsysconfigcó đối số scheme, chẳng hạn nhưget_paths().Added in version 3.10.
Thay đổi trong phiên bản 3.11: Khi Python chạy từ môi trường ảo và
key="prefix", lược đồ venv sẽ được trả về.
- sysconfig._get_preferred_schemes()¶
Trả về một lệnh chứa tên lược đồ ưa thích trên nền tảng hiện tại. Người triển khai và nhà phân phối lại Python có thể thêm các lược đồ ưa thích của họ vào giá trị toàn cầu cấp mô-đun
_INSTALL_SCHEMESvà sửa đổi hàm này để trả về các tên lược đồ đó, ví dụ: cung cấp các lược đồ khác nhau để người quản lý gói ngôn ngữ và hệ thống sử dụng, do đó các gói được cài đặt bởi một trong hai không trộn lẫn với các gói của gói kia.Người dùng cuối không nên sử dụng chức năng này mà thay vào đó là
get_default_scheme()vàget_preferred_scheme().Added in version 3.10.
- sysconfig.get_path_names()¶
Trả về một bộ chứa tất cả tên đường dẫn hiện được hỗ trợ trong
sysconfig.
- sysconfig.get_path(name[, scheme[, vars[, expand]]])¶
Trả về đường dẫn cài đặt tương ứng với đường dẫn name, từ sơ đồ cài đặt có tên scheme.
name phải là một giá trị trong danh sách được
get_path_names()trả về.sysconfiglưu trữ các đường dẫn cài đặt tương ứng với từng tên đường dẫn, cho từng nền tảng, với các biến số có thể mở rộng. Ví dụ: đường dẫn stdlib cho sơ đồ nt là:{base}/Lib.get_path()sẽ sử dụng các biến được trả về bởiget_config_vars()để mở rộng đường dẫn. Tất cả các biến đều có giá trị mặc định cho từng nền tảng nên người ta có thể gọi hàm này và nhận giá trị mặc định.Nếu scheme được cung cấp thì đó phải là giá trị từ danh sách được
get_scheme_names()trả về. Nếu không, sơ đồ mặc định cho nền tảng hiện tại sẽ được sử dụng.Nếu vars được cung cấp, nó phải là một từ điển chứa các biến sẽ cập nhật từ điển được trả về bởi
get_config_vars().Nếu expand được đặt thành
False, đường dẫn sẽ không được mở rộng bằng các biến.Nếu không tìm thấy name, hãy tăng
KeyError.
- sysconfig.get_paths([scheme[, vars[, expand]]])¶
Trả về một từ điển chứa tất cả các đường dẫn cài đặt tương ứng với sơ đồ cài đặt. Xem
get_path()để biết thêm thông tin.Nếu scheme không được cung cấp, sẽ sử dụng sơ đồ mặc định cho nền tảng hiện tại.
Nếu vars được cung cấp, nó phải là một từ điển gồm các biến sẽ cập nhật từ điển được sử dụng để mở rộng đường dẫn.
Nếu expand được đặt thành false, đường dẫn sẽ không được mở rộng.
Nếu scheme không phải là sơ đồ hiện có,
get_paths()sẽ đưa raKeyError.
Các chức năng khác¶
- sysconfig.get_python_version()¶
Trả về số phiên bản Python
MAJOR.MINORdưới dạng chuỗi. Tương tự với'%d.%d' % sys.version_info[:2]
- sysconfig.get_platform()¶
Trả về một chuỗi xác định nền tảng hiện tại.
Điều này được sử dụng chủ yếu để phân biệt các thư mục xây dựng dành riêng cho nền tảng và các bản phân phối được xây dựng dành riêng cho nền tảng. Thông thường bao gồm tên, phiên bản hệ điều hành và kiến trúc (do
os.uname()cung cấp), mặc dù thông tin chính xác đi kèm tùy thuộc vào hệ điều hành; ví dụ: trên Linux, phiên bản kernel không đặc biệt quan trọng.Ví dụ về các giá trị trả về:
Windows:
win-amd64 (Windows 64-bit trên AMD64, còn gọi là x86_64, Intel64 và EM64T)
win-arm64 (Windows 64-bit trên ARM64, hay còn gọi là AArch64)
win32 (tất cả những cái khác - cụ thể là sys.platform được trả về)
Hệ điều hành dựa trên POSIX:
linux-x86_64
macosx-15.5-arm64
macosx-26.0-universal2 (macOS trên Apple Silicon hoặc Intel)
android-24-arm64_v8a
Đối với các nền tảng không phải POSIX khác, hiện chỉ trả về
sys.platform.
- sysconfig.is_python_build()¶
Trả về
Truenếu trình thông dịch Python đang chạy được xây dựng từ nguồn và đang được chạy từ vị trí được xây dựng của nó chứ không phải từ một vị trí do ví dụ: chạymake installhoặc cài đặt qua trình cài đặt nhị phân.
- sysconfig.parse_config_h(fp[, vars])¶
Phân tích tệp kiểu
config.h-style.fp là một đối tượng giống như tệp trỏ đến tệp giống
config.h.Một từ điển chứa các cặp tên/giá trị sẽ được trả về. Nếu một từ điển tùy chọn được chuyển vào làm đối số thứ hai, thì từ điển đó sẽ được sử dụng thay cho từ điển mới và được cập nhật với các giá trị được đọc trong tệp.
- sysconfig.get_config_h_filename()¶
Trả về đường dẫn của
pyconfig.h.
- sysconfig.get_makefile_filename()¶
Trả về đường dẫn của
Makefile.
Sử dụng dòng lệnh¶
Bạn có thể sử dụng sysconfig làm tập lệnh với tùy chọn -m của Python:
$ python -m cấu hình hệ thống
Nền tảng: "macosx-10.4-i386"
Phiên bản Python: "3.2"
Sơ đồ cài đặt hiện tại: "posix_prefix"
Đường dẫn:
dữ liệu = "/usr/cục bộ"
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"
Biến:
AC_APPLE_UNIVERSAL_BUILD = "0"
AIX_GENUINE_CPLUSPLUS = "0"
AR = "ar"
ARFLAGS = "rc"
...
Cuộc gọi này sẽ in ở đầu ra tiêu chuẩn thông tin được trả về bởi get_platform(), get_python_version(), get_path() và get_config_vars().