如何在一个位置处理多个平台的蟒蛇蛋?

我们为所有系统安装了一个常见的python,以确保每个系统都具有相同的python安装并简化配置问题。此安装位于共享驱动器上。我们还有多个共享此安装的平台。我们通过在编译python时设置--exec-prefix configure选项来解决冲突的特定于平台的文件。 我的问题是我现在想要使用依赖于平台的easy_install(或其他)安装一个鸡蛋。 easy_install将egg放在安装的独立于平台的部分的site-packages目录中。鸡蛋的名称中有平台,所以不应该有冲突。但是python只会加载它找到的第一个。 (因此,在Solaris上它可能会尝试加载Linux egg)。修改easy-install.pth文件可以改变它找到的文件,但这是无用的。 我可以将.egg文件移动到平台依赖的包目录中,然后使用pkg_resources.require()加载它们(或手动调整路径)。但似乎我不应该这样,因为平台是以鸡蛋的名义。 有没有更通用的方法我可以确保python将加载正确平台的鸡蛋?     
已邀请:
尝试virtualenv ... http://pypi.python.org/pypi/virtualenv ...用它自己的python解释器+ site_packages文件夹帮助你创建隔离的环境。因此,您永远不会与在本地路径中安装的软件包发生冲突。     
我最终得到的是手动将依赖于平台的egg移动到特定于平台的site-packages目录(如http://docs.python.org/install/index.html中所述)。然后我在同一目录中创建了另一个easy-install.pth,列出了要安装的egg。 如果easy_install要遵守exec_prefix并将依赖于平台的egg放在正确的“非纯模块分发”位置,这将更加方便。也许我会从easy_install人员那里请求这个。     
Python有足够的钩子来实现这一点,但这可能并不明智。如果你真的想实现它,请查看PEP 302并开始攻击
easy_install
distribute
源代码。如你所知,
easy-install.pth
中没有任何逻辑。 只需跟踪要安装的Python包,您可能会好得多。例如,您可以编写自己的Python包,它只取决于所需的集合。     
使用“easy_install -m”安装所有特定于平台的软件包,以便sys.path上没有默认版本。这样,版本解析在运行时进行,并且将考虑平台信息。     

要回复问题请先登录注册