在OSX上指定框架版本

时间:2010-10-07 18:03:18

标签: python macos

我正在编译嵌入Python的程序,特别是Python v3.1。在我的系统上,我有几个版本的Python框架:3.1,2.5,2.6。当我在编译时将“-framework Python”传递给g ++时,g ++似乎引入了2.6版(位于“/ System / Library / Frameworks /”)而不是版本3.1(位于“/ Library / Frameworks /”),结果在一个错误。这两条路径都在框架搜索路径中,从在详细模式下尝试相同的编译(将-v传递给g ++)可以看出这一点。

虽然这看起来很简单,但我在任何关于g ++,ld或xcode的文档中都未能找到它。目前,我通过将/System/Library/Frameworks/Python.framework移动到/System/Library/Frameworks/Python.framework.moved来完成成功的编译,但这不是一个丑陋的临时解决方案。

那么,有谁知道解决这个问题的最佳方法是什么?特别是,我希望能够针对正确版本的Python框架编译该程序,而不管系统上安装的任何其他版本。

感谢。

1 个答案:

答案 0 :(得分:0)

首先尝试在Current中更改Python框架中的/Library/Frameworks符号链接:

$ cd /Library/Frameworks/Python.framework/Versions
$ ls -l
total 4
drwxrwxr-x  8 root  admin  340 Aug 31 02:10 2.6/
drwxrwxr-x  8 root  admin  340 Oct  6 21:56 2.7/
drwxrwxr-x  7 root  admin  306 Oct  6 14:00 3.1/
lrwxr-xr-x  1 root  admin    3 Oct  7 00:33 Current@ -> 2.7
$ sudo rm Current
$ sudo ln -s 3.1 Current

(更新)我希望在没有测试的情况下确保Current中指向正确版本的/Library/Frameworks链接就足够了。但是,根据OP的实验,您可能还需要修改/System/Library中的类似链接。通常,在/System/Library中修改任何内容都是一个坏主意,因为其中的任何内容都被视为OS X的一部分并由Apple管理,因此,您所做的任何更改最多都可以被下一个{{1}删除。 1}},最糟糕的是,破坏你的系统。在这种情况下,可能不会产生很大的不同,因为System Update链接可能只在这种情况下使用,即链接嵌入式库。如果你真的很挑剔,你可以考虑在完成后恢复原始值。