uTools-Manuals/docs/python/sysconfig.html

30 lines
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">sysconfig</span>
<span class="gp">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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">&gt;&gt;&gt; </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-amd6464位Windows on AMD64aka x86_64Intel64EM64T等</span></li><li><span class="yiyi-st" id="yiyi-94">win-ia6464位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>