我希望能在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是不够的。
感谢让我更聪明!
SPECS: Mac OS:10.12.5
答案 0 :(得分:0)
免责声明:我对现代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版本,因此它是独立的,可能会收到更新。
答案 1 :(得分:0)
回答更广泛的问题,为什么Python有各种不同的可执行文件,
python
是Python可执行文件的基本命令行界面。pythonw
存在无头运行' Python程序,没有提供终端输出。这个独特的可执行文件特别适用于Windows上基于GUI的Python程序,其中不应打开控制台窗口,因此得名。python-config
脚本仅用于向试图编译或链接到特定Python二进制文件的程序提供配置信息,例如在创建Python扩展模块时(我认为,OSX上的.pyd文件)pydoc
从Python脚本文件中提取文档信息,例如从与特定类和函数的docstrings关联中提取文档信息。有关python
与pythonw
差异的更多信息:https://stackoverflow.com/a/30313091/1234300
除此之外,您还有一些专门标记为python-32
等的版本。这些版本将是32位版本,而64位版本可能与您系统上的其他版本相同。有时您可能希望使用32位版本的Python,因为您希望链接到其他32位代码,包括Python扩展或其他共享库。