【发布时间】:2020-08-02 15:34:37
【问题描述】:
当我在命令python3.7 上按tab 时,我得到以下信息
python3.7 python3.7-config python3.7m python3.7m-config
我查找了python3.7m 并找到了答案 - https://stackoverflow.com/a/16677339/6849682。
接下来我去每个实现的python终端输入以下代码
>>> import sysconfig
>>> sysconfig.get_config_var('EXT_SUFFIX')
我在两个 python 实现中得到相同的输出,即.cpython-37m-darwin.so
我还尝试了命令diff <(python3.7 -m sysconfig) <(python3.7m -m sysconfig) 来查看两个可执行文件的配置信息是否有任何差异,但输出为空意味着它们是相同的。
如果所有的可执行文件和配置变量都相同,那为什么要创建两个不同的python实现呢?
注意:
我不是在说python3.7/3.7m-config。
【问题讨论】:
-
python3.7-config不是同一个可执行文件。根据手册页“python-config 帮助编译和链接嵌入 Python 解释器的程序,或可以动态(在运行时)加载到解释器中的扩展模块”。至于python3.7和python3.7m,我不知道“-m”版本,但在Linux 中,一个应用程序到另一个应用程序的符号链接是很常见的。例如,更改是在您的系统中还有一个python3命令指向python3.7可执行文件。 -
@wovano 我不是在问
python3.7-config。 -
您在前几行中提到了它。如果它与您的问题无关,也许您应该删除它。
-
我不知道答案,但 PEP 似乎有一个提示:“默认情况下,在 Python 3.2 中,
configure启用--with-pymalloc,因此共享库文件名将显示为foo.cpython-32m.so"。所以也许python3m是为了兼容性而保留的?
标签: python python-3.x python-internals pythoninterpreter