OSX10.9sdk中缺少Python.framework。为什么?还有:解决办法?

2024-04-26 20:47:30 发布

您现在位置:Python中文网/ 问答频道 /正文

系统:

  • 苹果操作系统小牛10.9 13A603
  • Xcode版本5.0.1(5A2053)

问题:

Xcode的10.9sdk中似乎缺少Python.framework。

Xcode 10.8 SDK中存在Python.framework:

/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

是否有意将Python.framework从10.9sdk中删除?这难道不是苹果公司停止使用这个框架的一个不那么微妙的暗示吗?还是我只是困惑?

注:

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

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


Tags: appdeveloper系统contentslibrarysdkframeworksystem
3条回答

有一个官方的苹果支持页面:

Changes To Embedding Python Using Xcode 5.0

基本上,他们所说的与Python集成到SDK的方法Python.framework已经被弃用,而应该使用使用python.h头的标准*nix方法。

也就是说(下面的说明是一个摘要-请查看链接的文章了解更多详细信息):

  1. #include <Python.h>替换#include <Python/Python.h>
  2. 在头搜索路径中包含Python头位置
  3. 从项目生成中删除Python.framework
  4. 将python.dylib文件添加到Xcode

至于理由,他们没有详细说明,只是提到:

Because Python is a framework, it also resides in the SDK, even though Python (or any scripting language) has difficulties being in two places. Due to both long-term and recent issues, it was decided to remove Python from the SDK.

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

/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已经在-F前面附加了-Wl标志。所以,我补充说

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

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

      -framework Python.framework

我还是没办法把事情做好。然后我发现是什么:

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

-framework只需更改为-f

另外,还有一个Python系统范围的设置对象,以及需要修复的“Python config”CLI程序,这样它们就不再支持这个糟糕的设置了。

看起来Python.framework被苹果故意删除了:

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

苹果公司的10.9api diff文档显示它已经被删除。

相关问题 更多 >