【问题标题】:What did Apple do to the Python framework?苹果对 Python 框架做了什么?
【发布时间】:2011-05-27 11:23:33
【问题描述】:

[tl;博士?见底部]

OS X 上的 Python 一直令人讨厌,因为它被拆分并分散在整个系统中。有些在/usr,有些在/Library/Python,有些在/System/Library/Frameworks/Python.framework

现在,据我了解,该框架应该包含 Python 发行版,即不会改变的点点滴滴。一个例子是标题、标准库、二进制图像等。

因此,作为sort-of-popular Python C extension 的开发人员,我认为自己非常擅长 OS X 生态系统以及如何在其上编译 Python 扩展。就在一个月前,Apple decided to skip on QA 全面破坏了 C 扩展构建。

不过,它以一种新的方式被打破了,因为 Apple 似乎已经决定删除​​ Python 发行版中更好的部分。看看include/目录:

$ ls -l /System/Library/Frameworks/Python.framework/Versions/Current/include/python2.6 
total 16
-rw-r--r--  1 root  wheel    30K Jun 25  2010 pyconfig.h

遗漏了什么? Python.h 可能是标头?更重要的是,我遇到了zc.buildout 的麻烦,因为它找不到site.py... 看看吧:

$ python -c 'print __import__("site").__file__'
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.pyc

$ ls -l /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.py*
-rw-r--r--  1 root  wheel    20K May 17 15:40 /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site.pyc

遗漏了什么?可能是site.py 原版?

总而言之,Apple 似乎正在剥离重要的开发人员资源。我在其他装有 OS X 10.6.7 的 MacBook 上证实了这两个发现。

tl;dr Apple 已从 Python 框架中删除了许多重要的标头和源代码。其他人发生过这种情况吗?如果是这样,这是什么时候发生的?为什么会这样?最重要的是,我该如何找回它们?

【问题讨论】:

  • 无论如何,你通常最好安装一个单独的 Python 版本(尤其是如果你想使用 numpy/scipy)。
  • 在我的 MacBook Pro 和 10.6.7 的 MacPro 上看起来都不错
  • 但我知道这曾经有效!它仍然适用于@Asgeir
  • 我想我应该考虑重新安装 Xcode!

标签: python macos


【解决方案1】:

Python.h 和其他头文件包含在 Xcode 中。在我的系统上,它位于/Developer/SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h/System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6/Python.h。后者似乎是由 Xcode 安装程序安装的。

【讨论】:

  • 那么你在/System/Library/Python.framework 中还有一个。这似乎是我的问题。 :-( 也没有人知道为什么?
【解决方案2】:

实际上,您似乎根本不了解 OS X 生态系统。 /System/Library 用于 Apple 提供的 OS X “发行版”组件;第三方不得将文件放在那里,而应使用/Library。这就是为什么内置的Pythons(多个版本)在/System/Library/Frameworks/Python.framework,但是把site-packages目录放在/Library/Python,这样第三方模块就可以安装在那里了。至于/usr/bin,它包含按版本指向python 可执行文件的符号链接,以及根据某些参数自动选择版本的程序(参见man python)。它实际上非常合乎逻辑和整洁。

现在回答您的问题。 C 头文件和其他开发人员资源不包含在 OS X 的默认安装中。这不是特定于 Python 的,这样做是为了节省默认安装的空间。要获取开发者资源,您需要安装开发者工具。无论如何,你打算如何处理没有 C 编译器的 C 头文件?

【讨论】:

  • 这个回答的语气很差;你似乎在寻找一个论点。我说的正是你在回答中所说的,你在重申同样的信息。非常没有帮助。
  • 多么奇怪的抱怨。我回答了你所有的问题:“其他人发生过这种情况吗?为什么会发生?最重要的是,我该如何让他们回来?” (实际上,对不起,我错过了“如果是这样,这是什么时候发生的?”:我认为是 10.6)。我还回答了一个你没有直接问但仍然需要知道的问题(在 OS X 上组织 Python 文件的基本原理)。我猜最后的反问问题听起来有点刻薄,但考虑到你问题中的语言(“令人憎恶”、“缺少什么?”、“看看”等),我没想到你会被它困扰。
  • 把它粘在男人身上,正如我们所说,是在处理技术难题时表达挫败感的常用方式。很多人都这样做;这并不意味着以类似的指责方式回复是一个好主意——我是一个人,苹果是一家公司。我们中的一个人有大脑。很抱歉,我真的不明白你是如何回答所有这些问题的; “我如何让他们回来”也许是这里的首要问题! 重新安装 Xcode 可能会将这些恢复,但它几乎是全新安装。
  • 我属于“如果你不能接受就不要扔掉它”的学校。您是否完整安装了 Xcode?标头包含在“UNIX 开发”包中。尝试进行自定义安装并选择它。
  • 我不知道怎么做,但不知何故,Xcode 安装程序一定跳过了安装这些头文件(以及 Python 标准库的源代码..?)即使我很自信我只是告诉它默认做任何它想做的事情。感谢您的时间和精力。
【解决方案3】:

我过去也遇到过类似的问题。 Space_C0wb0y 的建议对我有用,使用 python_select 我可以在 python 的“默认”版本之间切换。这也使我与 XCode 分离。我使用 MacPorts 安装了 2.6 和 2.7 版本,默认情况下将分发版放置在 /opt/local/Library/Frameworks/Python.framework/Versions/2.7 等位置。这是我设法获得一致安装(包括 3rd 方模块)的唯一方法。

【讨论】:

  • 好吧,我不确定我是否愿意拥有其他版本的 Python 只是因为 Apple 决定破坏某些东西。这以前有效,对此我非常非常确定。我真的很想知道曾经工作的系统发生了什么。
  • 我完全同意,但很高兴能与苹果在这方面决定做的任何事情脱钩。我也经常需要在 2.6 和 2.7 上开发和测试,所以轻松切换的能力很好。
  • 我在 Gentoo Linux 的 VMware 映像上进行测试,以免污染 Apple 提供的系统基板。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-30
  • 1970-01-01
  • 2019-01-13
  • 2020-10-13
相关资源
最近更新 更多