Python安装方案详解:INSTALL_SCHEMES配置的作用
在安装Python时,安装目录和文件的布局由一个名为INSTALL_SCHEMES的字典定义。该字典包含特定的操作系统和安装类型的键值对,以确定如何安装Python库和脚本文件。
INSTALL_SCHEMES 的值是一个元组,包含四个字符串,它们分别是:
1. purelib:纯Python库的安装路径。
2. platlib:平台相关的Python库(对于支持多个Python解释器的系统)的安装路径。
3. headers:C或C++扩展模块所需的头文件的安装路径。
4. scripts:可执行工具脚本的安装路径。
这些路径可以是相对路径,相对于Python的安装路径,也可以是绝对路径,全局有效。
INSTALL_SCHEMES的默认配置如下:
INSTALL_SCHEMES = {
'posix_prefix': {
'purelib': '{base}/lib/python{py_version_short}/site-packages',
'platlib': '{platbase}/lib/python{py_version_short}/site-packages',
'headers': '{base}/include/python{py_version_short}',
'scripts': '{base}/bin',
'data' : '{base}',
},
'posix_home': {
'purelib': '{base}/lib/python',
'platlib': '{base}/lib/python',
'headers': '{base}/include/python',
'scripts': '{base}/bin',
'data' : '{base}',
},
'nt': {
'purelib': '{base}\\Lib\\site-packages',
'platlib': '{base}\\Lib\\site-packages',
'headers': '{base}\\Include',
'scripts': '{base}\\Scripts',
'data' : '{base}',
},
'os2': {
'purelib': '{base}\\Lib\\site-packages',
'platlib': '{base}\\Lib\\site-packages',
'headers': '{base}\\Include',
'scripts': '{base}\\Scripts',
'data' : '{base}',
},
'mac': {
'purelib': '{base}/lib/python{py_version_short}/site-packages',
'platlib': '{base}/lib/python{py_version_short}/site-packages',
'headers': '{base}/include/python{py_version_short}',
'scripts': '{base}/bin',
'data' : '{base}',
},
}
安装时的配置会根据操作系统的不同而不同。下面是具体解释和示例。
- posix_prefix:用于UNIX和Linux系统,表示使用标准的prefix和exec_prefix来安排库的安装位置。base是安装的根目录,py_version_short是Python版本号的短形式。
例如,对于Python 3.8.5版本,posix_prefix 安装方案的值如下:
'platlib': '/usr/local/lib/python3.8/site-packages', 'headers': '/usr/local/include/python3.8', 'scripts': '/usr/local/bin', 'data': '/usr/local'}, '/usr/local/include/python3.8', '3.8')
- posix_home:用于用户主目录的私有Python安装,例如virtualenv。
例如,posix_home 安装方案的值如下:
'platlib': '/home/user/.local/lib/python', 'headers': '/home/user/.local/include/python', 'scripts': '/home/user/.local/bin', 'data': '/home/user/.local'}, '/home/user/.local/include/python', '')
- nt:用于Windows平台的通用安装方案。
例如,nt 安装方案的值如下:
'platlib': 'C:\\Python\\Lib\\site-packages', 'headers': 'C:\\Python\\Include', 'scripts': 'C:\\Python\\Scripts', 'data': 'C:\\Python'}, 'C:\\Python\\Include', '')
- os2:用于OS/2平台的通用安装方案。
- mac:用于Mac OS X上的通用安装方案。
这些安装方案可以通过函数get_path(scheme, vars)获取路径。scheme参数指定安装方案,vars参数是变量字典,包含用于创建路径的变量。
例如,使用posix_prefix安装方案,创建纯Python库的路径:
from distutils.sysconfig import get_path
scheme = 'posix_prefix'
vars = {'base': '/usr/local', 'py_version_short': '3.8'}
purelib = get_path(scheme, vars)['purelib']
print(purelib) # 输出:/usr/local/lib/python3.8/site-packages
可以根据自己的需求,通过修改INSTALL_SCHEMES来更改默认的安装路径配置。
