我需要为我的开发定义一个运行时环境。第一个想法当然不是重新发明轮子。我下载了macports,用过easy_install,试过fink。我总是有问题。现在,例如,我无法编译scipy,因为MacPorts安装程序想要下载并安装gcc43,但这不能在Snow Leopard上编译。这个问题是一个错误,但我基本上与它们绑在一起,因为我的运行时可用。
我前段时间学到的一种技术是编写一个makefile来下载并使用明确指定的库和实用程序版本构建运行时/库。这早于MacPorts / fink / apt方法,但你对它有更多的控制,尽管你必须手工完成所有事情。当然,如果运行时间增长,这可能会成为一个噩梦,但如果您发现问题,可以使用patch
并在下载的软件包上修复问题,然后构建它。
我有多个问题:
编辑:我特别不明白的是其他项目没有给我提示。例如,我刚刚下载了scipy,一个包含大量依赖项的复杂库。开发人员必须先设置所有deps才能进行操作。尽管如此,svn中没有任何东西可以创造这种环境。
修改:为问题添加了赏金。我认为这是一个重要问题,值得得到更多答案。我会用现实世界的例子考虑最好的答案,特别注意任何出现的问题及其解决方案。
激励赏金的其他问题:
答案 0 :(得分:1)
我们使用CMake脚本生成Makefiles,下载(主要通过SVN)/ configure / build我们所有的依赖项。为何选择CMake?多。这非常有效,我们支持调用scons / autopain / cmake。当我们在几个平台(Windows,MacOSX,一堆Linux变体)上构建时,我们还支持基于操作系统的不同编译标志等。通常,库具有默认配置,如果遇到需要特殊配置的系统,则配置将替换为专用配置。这非常有效。我们并没有真正找到适合我们目的的现成解决方案。
话虽如此,它是一个PITA来启动和运行 - 当你需要支持多个操作系统时,需要转动许多旋钮。我认为它不会成为维护噩梦,因为依赖关系是非常固定的(库经常升级,但我们很少引入新的)。
答案 1 :(得分:1)
virtualenv很好,但它无法做到魔法 - 例如如果你想使用一个只需要Python 2.4 的库和另一个绝对需要2.5的库,那你就不走运了。当有一个全新的操作系统发布时,virtualenv(或任何其他工具)也无法提供帮助,有一半的工具只是不支持它,正如你在Snow Leopard中提到的那样:有些问题根本无法解决(两个问题)其他人只需要耐心(直到你需要的所有工具都移植到新的操作系统版本中,你只需要坚持以前的操作系统版本)。