欢迎访问宙启技术站
智能推送

Python安装方案详解:INSTALL_SCHEMES配置的作用

发布时间:2024-01-15 21:35:34

在安装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系统,表示使用标准的prefixexec_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来更改默认的安装路径配置。