tldr:如何在Mac上安装Python?甚至在我开始破坏它之前,还会有大量毫无意义的复制发生吗?
我希望得到一些关于Mac上Python系统架构的指导(也许答案与操作系统无关,但为了安全起见,我认为它不是)。
我可以运行各种命令,这些命令似乎为我提供了多个Python二进制文件。事实上,也许还有更多--这正是我到目前为止所遇到的。
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
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
ls /Library/Frameworks/Python.framework/Versions/2.7 Current
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 : 10.12.5
发布于 2017-08-01 03:04:08
要回答您更广泛的问题:为什么Python有各种不同的可执行文件,
python是Python可执行的基本命令行接口。pythonw的存在是为了运行“无头”Python程序,而不提供终端输出。对于不应该打开控制台窗口的基于GUI的Python程序,这种不同的可执行文件尤其是必要的,因此它的名称。python-config脚本的存在只是为了向那些试图针对特定的Python二进制文件进行编译或链接的程序提供配置信息,例如在创建.pyd扩展模块时(我相信,在OSX上创建.pyd文件)。pydoc从Python文件中提取文档信息,例如从与特定类和函数关联的docstring中提取文档信息。关于python和pythonw差异的更多信息:https://stackoverflow.com/a/30313091/1234300
除此之外,您还有一些专门标记为python-32等的版本。这些版本将是32位版本,而64位版本可能是您系统上的其他版本。有时,您可能希望使用32位版本的Python,因为您希望链接到其他32位代码,包括Python扩展或其他共享库。
发布于 2017-08-01 02:16:26
免责声明:我对现代macOS知之甚少。
/System/Library/Frameworks/Python.framework/Versions/2.*/下的所有文件似乎都是相同的文件。也就是说,下面显示了3个相同的校验和:
md5 /System/Library/Frameworks/Python.framework/Versions/2.{3,5,6}/bin/python我认为它适用于macOS应用程序,这些应用程序假定有特定的早期Python版本可用。他们都得到了同样的2.6.9,也就是2.6的最后一个版本。2.x/lib都包含带有.py*文件的python2.6子目录,这似乎也是相同的:
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.6Python2.7是唯一维护的2.x版本,因此它是独立的,很可能会接收更新。
https://stackoverflow.com/questions/45425026
复制相似问题