OS X 10.9 SDK缺少Python.framework。为什么?另外:解决方法?

时间:2013-10-24 01:39:27

标签: python xcode macos sdk osx-mavericks

系统

  • OS X Mavericks 10.9 13A603
  • Xcode Version 5.0.1(5A2053)

问题:

Xcode的10.9 SDK中似乎缺少

Python.framework

Python.framework存在于Xcode 10.8 SDK中:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/System/Library/Frameworks/Python.framework

但是,我的Xcode 10.9 SDK中缺少它:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/System/Library/Frameworks/

这很奇怪,因为Python.framework仍可供10.9系统上的用户使用:

/System/Library/Frameworks/Python.framework

是否有意从10.9 SDK中删除了Python.framework?这是苹果停止使用这个框架的一个不那么微妙的暗示吗?或者我只是困惑?

注意:

这很重要,因为我有一个OS X应用程序链接Python.framework。我似乎无法使用基本SDK 构建设置 10.9 构建我的应用程序,因为缺少Python.framework,我必须链接到它。

我对为什么缺少这个框架(或者为什么我错了,实际上没有丢失)的解释感兴趣,以及解决方法的建议。

4 个答案:

答案 0 :(得分:17)

有一个关于这个主题的官方Apple支持页面:

Changes To Embedding Python Using Xcode 5.0

基本上,他们所说的是不推荐使用与SDK Python.framework集成Python的方法,而应该使用使用python.h标头的标准* nix方法。

即(以下说明是摘要 - 请查看链接文章以获取更多详细信息):

  1. #include <Python/Python.h>替换为#include <Python.h>;
  2. 在标题搜索路径中包含Python标头位置;
  3. 从项目构建中删除Python.framework;
  4. 将python .dylib文件添加到Xcode;
  5. 至于理由,他们没有详细说明,他们只是提到:

      

    因为Python是一个框架,所以它也存在于SDK中,即使Python(或任何脚本语言)在两个地方都有困难。由于长期和最近的问题,决定从SDK中删除Python。

答案 1 :(得分:1)

我也遇到了(和解决)这个问题:

/bin/sh ../libtool --silent --tag=CC  --mode=link gcc  -I../include -I../ -g -O2 -Wall \
    -isysroot <blah>/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk \
    -Wl,-F/System/Library/Frameworks \
    -framework Python \
    -u _PyMac_Error \
    -o libdnet.la -\
     rpath /usr/local/lib *.lo

最初跳出来的东西是我正在使用的gnu libtool在-Wl的前面添加了-F标记。所以,我添加了

     -F/System/Library/Frameworks
     -L/System/Library/Frameworks (just to be safe)

然后,另一件非常明显的事情是'-framework Python'没有像往常一样的.framework后缀。所以,我也添加了

      -framework Python.framework

我仍然无法开展工作。然后我弄清楚它是什么:

长话短说,我不知道它为什么会起作用或为什么他们改变了什么,我特别恼火的是Python.framework不再在SDK中了(当然,它总是很奇怪的链接到它,但我需要一段时间来重新训练自己..

-framework 只需更改为 -f

Bonus round,有一个Python系统范围的设置对象,以及需要修复的'python-config'CLI程序,因此它们不再传播这个糟糕的设置。

答案 2 :(得分:0)

Apple似乎故意删除了Python.framework:

https://developer.apple.com/library/mac/releasenotes/General/APIDiffsMacOSX10_9/index.html

来自Apple的10.9 API差异文件显示它已被删除。

答案 3 :(得分:-1)

如果您安装Xcode命令行工具,该框架将可用:

xcode-select --install