Python 系统配置

Python System Configuration


tldr: Python 如何在 Mac 上设置?在我开始破坏它之前是否有大量无意义的复制正在进行?

我希望在 Mac 上获得一些关于 Python 系统架构的指导(也许答案是 OS 不可知论者,但为了安全起见,我假设它不是)。

我可以运行 各种命令似乎 给我多个Python 二进制文件。事实上,可能还有更多这就是我到目前为止所遇到的。

  1. ls /usr/local/bin/ | grep 'python\|pyd'

pydoc pydoc2 pydoc2.7 python python-32 python-config python2 python2-32 python2-config python2.7 python2.7-32 python2.7-config pythonw pythonw-32 pythonw2 pythonw2-32 pythonw2.7 pythonw2.7-32

  1. ls /usr/bin | grep 'python\|pyd'

pydoc pydoc2.6 pydoc2.7 python python-config python2.6 python2.6-config python2.7 python2.7-config pythonw pythonw2.6 pythonw2.7

  1. ls /Library/Frameworks/Python.framework/Versions/

2.7 Current

  1. ls /System/Library/Frameworks/Python.framework/Versions/

2.3 2.5 2.6 2.7 Current

至于执行一个.py时的第一个运行;当我 运行 which python 我回来时

/Library/Frameworks/Python.framework/Versions/2.7/bin/python

当我使用 REPL 时,这似乎是一致的。 site-packages 相对于此安装可用(不是我修改其他站点包位置)

我没有对 Mac 上的 python 环境进行任何重大修改,所以我假设这是开箱即用的。如果有人了解所有这些二进制文件如何组合在一起以及为什么它们都存在,请告诉我。如果答案是 RTM,请简单地指向一个页面,因为 https://docs.python.org/2/using/mac.html 不够。

谢谢你让我变得更聪明!

规格: Mac OS: 10.12.5

免责声明:我对现代 macOS 知之甚少。

/System/Library/Frameworks/Python.framework/Versions/2.*/ 下的所有文件似乎都是相同的文件。也就是说,下面显示了 3 个相同的校验和:

md5 /System/Library/Frameworks/Python.framework/Versions/2.{3,5,6}/bin/python

我想它适用于假定特定早期 Python 版本可用的 macOS 应用程序。它们都被赋予相同的 2.6.9,这是 2.6 的最后一个版本。 2.x/lib 都包含 python2.6 子目录和 .py* 个文件,它们看起来也相同:

md5 /System/Library/Frameworks/Python.framework/Versions/2.{3,5,6}/lib/python2.6/threading.pyc

我不知道所有这些文件是否都是指向相同字节的硬链接,但看起来很有可能。所有的解释器看起来都一样:

$ find /System/Library/Frameworks/Python.framework/Versions/2.{3,5,6}/bin/* \
  -samefile /System/Library/Frameworks/Python.framework/Versions/2.6/bin/python

/System/Library/Frameworks/Python.framework/Versions/2.3/bin/python2.6
/System/Library/Frameworks/Python.framework/Versions/2.5/bin/python2.6
/System/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6

Python 2.7 是唯一维护的 2.x 版本,因此它是独立的并且可能接收更新。

回答关于为什么 Python、

有各种不同可执行文件的更广泛的问题
  • python 是基本命令行界面 Python 可执行文件。
  • pythonw 存在于 运行 'headless' Python 程序中,不提供终端输出。对于基于 GUI 的 Python 程序,这种独特的可执行文件在 Windows 上尤其必要,在这些程序中不应打开控制台 window,因此得名。
  • python-config 脚本的存在只是为了向寻求针对特定 Python 二进制文件编译或 link 的程序提供配置信息,例如在创建 Python 扩展模块时( .pyd 文件,我相信,在 OSX)
  • pydoc 从 Python 脚本文件中提取文档信息,例如从与特定 类 和函数关联的文档字符串中提取文档信息。

更多关于 pythonpythonw 的区别:

除此之外,您还有一些特别标记为 python-32 等的版本。这些将是 32 位版本,而 64 位版本可能是您系统上的其他版本。有时您可能希望使用 32 位版本的 Python,因为您希望 link 到其他 32 位代码,包括 Python 扩展或其他共享库。