mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 15:04:05 +08:00
30 lines
23 KiB
HTML
30 lines
23 KiB
HTML
<div class="body" role="main"><div class="section" id="module-sysconfig"><h1><span class="yiyi-st" id="yiyi-10">29.2. <a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a> - 提供对Python配置信息的访问</span></h1><div class="versionadded"><p><span class="yiyi-st" id="yiyi-11"><span class="versionmodified">版本3.2中的新功能。</span></span></p></div><p><span class="yiyi-st" id="yiyi-12"><strong>源代码:</strong> <a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/sysconfig.py">Lib / sysconfig.py</a></span></p><p><span class="yiyi-st" id="yiyi-13"><a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a>模块提供对Python配置信息的访问,如安装路径列表和与当前平台相关的配置变量。</span></p><div class="section" id="configuration-variables"><h2><span class="yiyi-st" id="yiyi-14">29.2.1. </span><span class="yiyi-st" id="yiyi-15">Configuration variables</span></h2><p><span class="yiyi-st" id="yiyi-16">A Python distribution contains a <code class="file docutils literal"><span class="pre">Makefile</span></code> and a <code class="file docutils literal"><span class="pre">pyconfig.h</span></code> header file that are necessary to build both the Python binary itself and third-party C extensions compiled using <a class="reference internal" href="distutils.html#module-distutils" title="distutils: Support for building and installing Python modules into an existing Python installation."><code class="xref py py-mod docutils literal"><span class="pre">distutils</span></code></a>.</span></p><p><span class="yiyi-st" id="yiyi-17"><a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a>将这些文件中找到的所有变量放在可以使用<a class="reference internal" href="#sysconfig.get_config_vars" title="sysconfig.get_config_vars"><code class="xref py py-func docutils literal"><span class="pre">get_config_vars()</span></code></a>或<a class="reference internal" href="#sysconfig.get_config_var" title="sysconfig.get_config_var"><code class="xref py py-func docutils literal"><span class="pre">get_config_var()</span></code></a>访问的字典中。</span></p><p><span class="yiyi-st" id="yiyi-18">注意在Windows上,它是一个小得多的集合。</span></p><dl class="function"><dt id="sysconfig.get_config_vars"><span class="yiyi-st" id="yiyi-19"> <code class="descclassname">sysconfig.</code><code class="descname">get_config_vars</code><span class="sig-paren">(</span><em>*args</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-20">没有参数,返回与当前平台相关的所有配置变量的字典。</span></p><p><span class="yiyi-st" id="yiyi-21">使用参数,返回从查找配置变量字典中的每个参数产生的值的列表。</span></p><p><span class="yiyi-st" id="yiyi-22">对于每个参数,如果未找到该值,则返回<code class="docutils literal"><span class="pre">None</span></code>。</span></p></dd></dl><dl class="function"><dt id="sysconfig.get_config_var"><span class="yiyi-st" id="yiyi-23"> <code class="descclassname">sysconfig.</code><code class="descname">get_config_var</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-24">返回单个变量<em>名称</em>的值。</span><span class="yiyi-st" id="yiyi-25">等同于<code class="docutils literal"><span class="pre">get_config_vars().get(name)</span></code>。</span></p><p><span class="yiyi-st" id="yiyi-26">如果未找到<em>名称</em>,请返回<code class="docutils literal"><span class="pre">None</span></code>。</span></p></dd></dl><p><span class="yiyi-st" id="yiyi-27">使用示例:</span></p><pre><code class="language-python"><span></span><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">sysconfig</span>
|
||
<span class="gp">>>> </span><span class="n">sysconfig</span><span class="o">.</span><span class="n">get_config_var</span><span class="p">(</span><span class="s1">'Py_ENABLE_SHARED'</span><span class="p">)</span>
|
||
<span class="go">0</span>
|
||
<span class="gp">>>> </span><span class="n">sysconfig</span><span class="o">.</span><span class="n">get_config_var</span><span class="p">(</span><span class="s1">'LIBDIR'</span><span class="p">)</span>
|
||
<span class="go">'/usr/local/lib'</span>
|
||
<span class="gp">>>> </span><span class="n">sysconfig</span><span class="o">.</span><span class="n">get_config_vars</span><span class="p">(</span><span class="s1">'AR'</span><span class="p">,</span> <span class="s1">'CXX'</span><span class="p">)</span>
|
||
<span class="go">['ar', 'g++']</span>
|
||
</code></pre></div><div class="section" id="installation-paths"><h2><span class="yiyi-st" id="yiyi-28">29.2.2. </span><span class="yiyi-st" id="yiyi-29">Installation paths</span></h2><p><span class="yiyi-st" id="yiyi-30">Python使用的安装方案因平台和安装选项而异。</span><span class="yiyi-st" id="yiyi-31">这些方案存储在基于<a class="reference internal" href="os.html#os.name" title="os.name"><code class="xref py py-const docutils literal"><span class="pre">os.name</span></code></a>返回值的唯一标识符下的<a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a>中。</span></p><p><span class="yiyi-st" id="yiyi-32">使用<a class="reference internal" href="distutils.html#module-distutils" title="distutils: Support for building and installing Python modules into an existing Python installation."><code class="xref py py-mod docutils literal"><span class="pre">distutils</span></code></a>或基于Distutils的系统安装的每个新组件都将遵循相同的方案,在正确的位置复制其文件。</span></p><p><span class="yiyi-st" id="yiyi-33">Python目前支持七种方案:</span></p><ul class="simple"><li><span class="yiyi-st" id="yiyi-34"><em>posix_prefix</em>:用于Posix平台(如Linux或Mac OS X)的方案。</span><span class="yiyi-st" id="yiyi-35">这是在安装Python或组件时使用的默认方案。</span></li><li><span class="yiyi-st" id="yiyi-36"><em>posix_home</em>:在安装时使用<em>home</em>选项时使用的Posix平台方案。</span><span class="yiyi-st" id="yiyi-37">当通过具有特定归属前缀的Distutils安装组件时,使用此方案。</span></li><li><span class="yiyi-st" id="yiyi-38"><em>posix_user</em>:当通过Distutils安装组件并使用<em>用户</em>选项时使用的Posix平台方案。</span><span class="yiyi-st" id="yiyi-39">此方案定义位于用户主目录下的路径。</span></li><li><span class="yiyi-st" id="yiyi-40"><em>nt</em>:用于NT平台(如Windows)的方案。</span></li><li><span class="yiyi-st" id="yiyi-41"><em>nt_user</em>:当使用<em>用户</em>选项时,NT平台的方案。</span></li></ul><p><span class="yiyi-st" id="yiyi-42">每个方案本身由一系列路径组成,并且每个路径具有唯一的标识符。</span><span class="yiyi-st" id="yiyi-43">Python目前使用八个路径:</span></p><ul class="simple"><li><span class="yiyi-st" id="yiyi-44"><em>stdlib</em>:包含不是平台特定的标准Python库文件的目录。</span></li><li><span class="yiyi-st" id="yiyi-45"><em>platstdlib</em>:包含平台特定的标准Python库文件的目录。</span></li><li><span class="yiyi-st" id="yiyi-46"><em>platlib</em>:特定于站点的平台特定文件的目录。</span></li><li><span class="yiyi-st" id="yiyi-47"><em>purelib</em>:特定于站点的非平台特定文件的目录。</span></li><li><span class="yiyi-st" id="yiyi-48"><em>include</em>:非平台特定头文件的目录。</span></li><li><span class="yiyi-st" id="yiyi-49"><em>platinclude</em>:特定于平台的头文件的目录。</span></li><li><span class="yiyi-st" id="yiyi-50"><em>scripts</em>:脚本文件的目录。</span></li><li><span class="yiyi-st" id="yiyi-51"><em>data</em>:数据文件的目录。</span></li></ul><p><span class="yiyi-st" id="yiyi-52"><a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a>提供了一些函数来确定这些路径。</span></p><dl class="function"><dt id="sysconfig.get_scheme_names"><span class="yiyi-st" id="yiyi-53"> <code class="descclassname">sysconfig.</code><code class="descname">get_scheme_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-54">返回包含<a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a>中当前支持的所有方案的元组。</span></p></dd></dl><dl class="function"><dt id="sysconfig.get_path_names"><span class="yiyi-st" id="yiyi-55"> <code class="descclassname">sysconfig.</code><code class="descname">get_path_names</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-56">返回包含当前在<a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a>中支持的所有路径名的元组。</span></p></dd></dl><dl class="function"><dt id="sysconfig.get_path"><span class="yiyi-st" id="yiyi-57"> <code class="descclassname">sysconfig.</code><code class="descname">get_path</code><span class="sig-paren">(</span><em>name</em><span class="optional">[</span>, <em>scheme</em><span class="optional">[</span>, <em>vars</em><span class="optional">[</span>, <em>expand</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-58">从名为<em>方案</em>的安装方案中返回与路径<em>名称</em>对应的安装路径。</span></p><p><span class="yiyi-st" id="yiyi-59"><em>名称</em>必须是由<a class="reference internal" href="#sysconfig.get_path_names" title="sysconfig.get_path_names"><code class="xref py py-func docutils literal"><span class="pre">get_path_names()</span></code></a>返回的列表中的值。</span></p><p><span class="yiyi-st" id="yiyi-60"><a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a>存储每个平台的每个路径名对应的安装路径,其中包含要展开的变量。</span><span class="yiyi-st" id="yiyi-61">对于实例,<em>nt</em>方案的<em>stdlib</em>路径是:<code class="docutils literal"><span class="pre">{base}/Lib</span></code>。</span></p><p><span class="yiyi-st" id="yiyi-62"><a class="reference internal" href="#sysconfig.get_path" title="sysconfig.get_path"><code class="xref py py-func docutils literal"><span class="pre">get_path()</span></code></a>将使用<a class="reference internal" href="#sysconfig.get_config_vars" title="sysconfig.get_config_vars"><code class="xref py py-func docutils literal"><span class="pre">get_config_vars()</span></code></a>返回的变量来展开路径。</span><span class="yiyi-st" id="yiyi-63">所有变量具有每个平台的默认值,因此可以调用此函数并获取默认值。</span></p><p><span class="yiyi-st" id="yiyi-64">如果提供<em>scheme</em>,它必须是<a class="reference internal" href="#sysconfig.get_scheme_names" title="sysconfig.get_scheme_names"><code class="xref py py-func docutils literal"><span class="pre">get_scheme_names()</span></code></a>返回的列表中的值。</span><span class="yiyi-st" id="yiyi-65">否则,将使用当前平台的默认方案。</span></p><p><span class="yiyi-st" id="yiyi-66">如果提供了<em>vars</em>,它必须是一个变量字典,它将更新由<a class="reference internal" href="#sysconfig.get_config_vars" title="sysconfig.get_config_vars"><code class="xref py py-func docutils literal"><span class="pre">get_config_vars()</span></code></a>返回的字典。</span></p><p><span class="yiyi-st" id="yiyi-67">如果<em>expand</em>设置为<code class="docutils literal"><span class="pre">False</span></code>,则不会使用变量扩展路径。</span></p><p><span class="yiyi-st" id="yiyi-68">如果未找到<em>名称</em>,请返回<code class="docutils literal"><span class="pre">None</span></code>。</span></p></dd></dl><dl class="function"><dt id="sysconfig.get_paths"><span class="yiyi-st" id="yiyi-69"> <code class="descclassname">sysconfig.</code><code class="descname">get_paths</code><span class="sig-paren">(</span><span class="optional">[</span><em>scheme</em><span class="optional">[</span>, <em>vars</em><span class="optional">[</span>, <em>expand</em><span class="optional">]</span><span class="optional">]</span><span class="optional">]</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-70">返回包含与安装方案对应的所有安装路径的字典。</span><span class="yiyi-st" id="yiyi-71">有关详细信息,请参阅<a class="reference internal" href="#sysconfig.get_path" title="sysconfig.get_path"><code class="xref py py-func docutils literal"><span class="pre">get_path()</span></code></a>。</span></p><p><span class="yiyi-st" id="yiyi-72">如果未提供<em>scheme</em>,则将使用当前平台的默认方案。</span></p><p><span class="yiyi-st" id="yiyi-73">如果提供了<em>vars</em>,它必须是将更新用于展开路径的字典的变量字典。</span></p><p><span class="yiyi-st" id="yiyi-74">如果<em>expand</em>设置为False,则不会展开路径。</span></p><p><span class="yiyi-st" id="yiyi-75">如果<em>方案</em>不是现有方案,<a class="reference internal" href="#sysconfig.get_paths" title="sysconfig.get_paths"><code class="xref py py-func docutils literal"><span class="pre">get_paths()</span></code></a>将引用<a class="reference internal" href="exceptions.html#KeyError" title="KeyError"><code class="xref py py-exc docutils literal"><span class="pre">KeyError</span></code></a>。</span></p></dd></dl></div><div class="section" id="other-functions"><h2><span class="yiyi-st" id="yiyi-76">29.2.3. </span><span class="yiyi-st" id="yiyi-77">Other functions</span></h2><dl class="function"><dt id="sysconfig.get_python_version"><span class="yiyi-st" id="yiyi-78"> <code class="descclassname">sysconfig.</code><code class="descname">get_python_version</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-79">将<code class="docutils literal"><span class="pre">MAJOR.MINOR</span></code> Python版本号作为字符串返回。</span><span class="yiyi-st" id="yiyi-80">类似于<code class="docutils literal"><span class="pre">sys.version[:3]</span></code>。</span></p></dd></dl><dl class="function"><dt id="sysconfig.get_platform"><span class="yiyi-st" id="yiyi-81"> <code class="descclassname">sysconfig.</code><code class="descname">get_platform</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-82">返回一个标识当前平台的字符串。</span></p><p><span class="yiyi-st" id="yiyi-83">这主要用于区分特定于平台的构建目录和特定于平台的构建分布。</span><span class="yiyi-st" id="yiyi-84">通常包括操作系统名称和版本以及体系结构(由<a class="reference internal" href="os.html#os.uname" title="os.uname"><code class="xref py py-func docutils literal"><span class="pre">os.uname()</span></code></a>提供),尽管包括的确切信息取决于操作系统;例如</span><span class="yiyi-st" id="yiyi-85">对于IRIX架构并不是特别重要(IRIX只能在SGI硬件上运行),但对于Linux,内核版本并不是特别重要。</span></p><p><span class="yiyi-st" id="yiyi-86">返回值的示例:</span></p><ul class="simple"><li><span class="yiyi-st" id="yiyi-87">linux-i586</span></li><li><span class="yiyi-st" id="yiyi-88">linux-alpha(?)</span></li><li><span class="yiyi-st" id="yiyi-89">solaris-2.6-sun4u</span></li><li><span class="yiyi-st" id="yiyi-90">irix-5.3</span></li><li><span class="yiyi-st" id="yiyi-91">irix64-6.2</span></li></ul><p><span class="yiyi-st" id="yiyi-92">Windows将返回以下值之一:</span></p><ul class="simple"><li><span class="yiyi-st" id="yiyi-93">win-amd64(64位Windows on AMD64(aka x86_64,Intel64,EM64T等)</span></li><li><span class="yiyi-st" id="yiyi-94">win-ia64(64位Windows on Itanium)</span></li><li><span class="yiyi-st" id="yiyi-95">win32(所有其他 - 特别是,sys.platform被返回)</span></li></ul><p><span class="yiyi-st" id="yiyi-96">Mac OS X可以返回:</span></p><ul class="simple"><li><span class="yiyi-st" id="yiyi-97">macosx-10.6-ppc</span></li><li><span class="yiyi-st" id="yiyi-98">macosx-10.4-ppc64</span></li><li><span class="yiyi-st" id="yiyi-99">macosx-10.3-i386</span></li><li><span class="yiyi-st" id="yiyi-100">macosx-10.4-脂肪</span></li></ul><p><span class="yiyi-st" id="yiyi-101">对于其他非POSIX平台,目前只返回<a class="reference internal" href="sys.html#sys.platform" title="sys.platform"><code class="xref py py-data docutils literal"><span class="pre">sys.platform</span></code></a>。</span></p></dd></dl><dl class="function"><dt id="sysconfig.is_python_build"><span class="yiyi-st" id="yiyi-102"> <code class="descclassname">sysconfig.</code><code class="descname">is_python_build</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-103">如果当前Python安装是从源代码构建的,则返回<code class="docutils literal"><span class="pre">True</span></code>。</span></p></dd></dl><dl class="function"><dt id="sysconfig.parse_config_h"><span class="yiyi-st" id="yiyi-104"> <code class="descclassname">sysconfig.</code><code class="descname">parse_config_h</code><span class="sig-paren">(</span><em>fp</em><span class="optional">[</span>, <em>vars</em><span class="optional">]</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-105">解析<code class="file docutils literal"><span class="pre">config.h</span></code>样式文件。</span></p><p><span class="yiyi-st" id="yiyi-106"><em>fp</em>是指向<code class="file docutils literal"><span class="pre">config.h</span></code>类似文件的类文件对象。</span></p><p><span class="yiyi-st" id="yiyi-107">返回包含名称/值对的字典。</span><span class="yiyi-st" id="yiyi-108">如果传递一个可选的字典作为第二个参数,它将被使用,而不是一个新的字典,并用文件中读取的值更新。</span></p></dd></dl><dl class="function"><dt id="sysconfig.get_config_h_filename"><span class="yiyi-st" id="yiyi-109"> <code class="descclassname">sysconfig.</code><code class="descname">get_config_h_filename</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-110">返回<code class="file docutils literal"><span class="pre">pyconfig.h</span></code>的路径。</span></p></dd></dl><dl class="function"><dt id="sysconfig.get_makefile_filename"><span class="yiyi-st" id="yiyi-111"> <code class="descclassname">sysconfig.</code><code class="descname">get_makefile_filename</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-112">返回<code class="file docutils literal"><span class="pre">Makefile</span></code>的路径。</span></p></dd></dl></div><div class="section" id="using-sysconfig-as-a-script"><h2><span class="yiyi-st" id="yiyi-113">29.2.4. </span><span class="yiyi-st" id="yiyi-114">Using <a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a> as a script</span></h2><p><span class="yiyi-st" id="yiyi-115">您可以使用<a class="reference internal" href="#module-sysconfig" title="sysconfig: Python's configuration information"><code class="xref py py-mod docutils literal"><span class="pre">sysconfig</span></code></a>作为Python的<em>-m</em>选项的脚本:</span></p><div class="highlight-shell-session"><div class="highlight"><pre><span></span><span class="gp">$</span> python -m sysconfig
|
||
<span class="go">Platform: "macosx-10.4-i386"</span>
|
||
<span class="go">Python version: "3.2"</span>
|
||
<span class="go">Current installation scheme: "posix_prefix"</span>
|
||
|
||
<span class="go">Paths:</span>
|
||
<span class="go"> data = "/usr/local"</span>
|
||
<span class="go"> include = "/Users/tarek/Dev/svn.python.org/py3k/Include"</span>
|
||
<span class="go"> platinclude = "."</span>
|
||
<span class="go"> platlib = "/usr/local/lib/python3.2/site-packages"</span>
|
||
<span class="go"> platstdlib = "/usr/local/lib/python3.2"</span>
|
||
<span class="go"> purelib = "/usr/local/lib/python3.2/site-packages"</span>
|
||
<span class="go"> scripts = "/usr/local/bin"</span>
|
||
<span class="go"> stdlib = "/usr/local/lib/python3.2"</span>
|
||
|
||
<span class="go">Variables:</span>
|
||
<span class="go"> AC_APPLE_UNIVERSAL_BUILD = "0"</span>
|
||
<span class="go"> AIX_GENUINE_CPLUSPLUS = "0"</span>
|
||
<span class="go"> AR = "ar"</span>
|
||
<span class="go"> ARFLAGS = "rc"</span>
|
||
<span class="go"> ASDLGEN = "./Parser/asdl_c.py"</span>
|
||
<span class="go"> ...</span>
|
||
</pre></div></div><p><span class="yiyi-st" id="yiyi-116">此调用将在标准输出中打印由<a class="reference internal" href="#sysconfig.get_platform" title="sysconfig.get_platform"><code class="xref py py-func docutils literal"><span class="pre">get_platform()</span></code></a>,<a class="reference internal" href="#sysconfig.get_python_version" title="sysconfig.get_python_version"><code class="xref py py-func docutils literal"><span class="pre">get_python_version()</span></code></a>,<a class="reference internal" href="#sysconfig.get_path" title="sysconfig.get_path"><code class="xref py py-func docutils literal"><span class="pre">get_path()</span></code></a>和<a class="reference internal" href="#sysconfig.get_config_vars" title="sysconfig.get_config_vars"><code class="xref py py-func docutils literal"><span class="pre">get_config_vars()</span></code></a>。</span></p></div></div></div> |