python3和python3m可执行文件之间的区别
/usr/bin/python3
和/usr/bin/python3m
可执行文件有什么区别?
我正在Ubuntu 13.04上观察它们,但Google暗示它们也存在于其他发行版上。
这两个文件具有相同的md5sum,但似乎不是符号链接或硬链接; 这两个文件具有不同的由ls -li
返回的inode编号,而testingfind -xdev -samefile /usr/bin/python3.3
不会返回任何其他文件。
有人在AskUbuntu上提出类似的问题 ,但我想了解更多关于这两个文件的区别。
由于这一点, chepner指出我已经有了解决scheme的链接。
Python实现可以根据需要在文件名标签中包含额外的标志。 例如,在POSIX系统上,这些标志也将有助于文件名:
–with-pydebug(flag:d)
–with-pymalloc(flag:m)
–with-wide-unicode(flag:u)
通过PEP 3149 。
关于m
标志具体来说,Pymalloc就是这样的:
Pymalloc是由Vladimir Marangozov编写的一个专门的对象分配器,是Python 2.1的一个特性。 Pymalloc旨在比系统malloc()更快,并且对于Python程序典型的分配模式,其内存开销更less。 分配器使用C的malloc()函数来获取大量内存,然后从这些池执行更小的内存请求。
通过Python 2.3中的新function
最后,这两个文件可能在某些系统上被硬链接。 虽然这两个文件在我的Ubuntu 13.04系统上有不同的inode编号(因此是不同的文件), 两年前的一篇comp.lang.python文章显示他们曾经是硬链接的。
Python 2和Python 3都被广泛使用。 有两个版本的原因是Python 3引入了一些新的关键字。 这意味着,如果一个variables名称与Python 3关键字相同,则用Python 3编译器编译的Python 2代码可能会中断。 决定哪一个取决于你的情况,但总的来说,新项目应该使用Python 3。
对于“点”之后的部分,Python 2将链接到最新版本的Python 2(比如2.7),Python 3将链接到它的最新版本3.5。 简单的“Python”链接到Python 2.我不知道编译器里面发生了什么,但是Python 3.5和Python 3.5m有单独的可执行文件,但是在我的Ubuntu 16.04上它们是字节对字节相同的。