擅长:python、mysql、java
<p>不幸的是没有办法做到这一点。python包必须完全驻留在一个目录中。<a href="http://www.python.org/dev/peps/pep-0382/" rel="nofollow">PEP 382</a>建议支持可以在不同目录中拆分的命名空间包,但遭到拒绝。(无论如何,这些都是特殊的包装。)</p>
<p>由于python包必须在一个目录中,因此不可能将编译后的扩展模块混合用于不同的体系结构。有两种方法可以缓解此问题:</p>
<ol>
<li>将二进制扩展放在一个单独的目录中,并将所有python包放在一个可以在体系结构之间共享的公共目录中。然后可以使用<code>PYTHONPATH</code>为不同的体系结构选择单独的二进制扩展目录。在</li>
<li>保存一个公共目录,其中包含不同体系结构的所有python文件和扩展名。对于每个体系结构,使用包名创建一个新目录。然后对每个目录中的所有python文件和二进制文件进行符号链接。这仍然允许代码驻留在一个单独的地方,代价是必须为每个新文件创建新的符号链接。在</li>
</ol>
<p>不幸的是,托尔斯滕·克兰斯提出的方案不适用于这个问题。使用distutils/setuptools/distribute仍然需要将所有python源文件安装在每个体系结构的一个目录中,这抵消了将它们放在单个目录中的优势。(这不是一个完成的包,但始终在进行中。)</p>