为什么使用distutils时会生成egg-info文件?
下面是我的setup.py文件。我在代码中没有使用setuptools,也没有任何外部依赖。
#!/usr/bin/env python
from distutils.core import setup
setup(name='dots',
...
packages=['dots','dots.configs','dots.management','dots.utils','dots.test'],
scripts=['dots/dots.py']
)
当我运行 python setup.py install
时,我得到了以下内容:
running install
running build
running build_py
running build_scripts
running install_lib
running install_scripts
changing mode of /Users/kevinlin/.virtualenvs/p-dots/bin/dots.py to 755
running install_egg_info <- why?
Removing /Users/kevinlin/.virtualenvs/p-dots/lib/python2.7/site-packages/dots-0.1-py2.7.egg-info
Writing /Users/kevinlin/.virtualenvs/p-dots/lib/python2.7/site-packages/dots-0.1-py2.7.egg-info
(p-dots)Kevins-MacBook-Pro-2% python setup.py install
running install
running build
running build_py
running build_scripts
running install_lib
running install_scripts
changing mode of /Users/kevinlin/.virtualenvs/p-dots/bin/dots.py to 755
running install_egg_info
Removing /Users/kevinlin/.virtualenvs/p-dots/lib/python2.7/site-packages/dots-0.1-py2.7.egg-info
Writing /Users/kevinlin/.virtualenvs/p-dots/lib/python2.7/site-packages/dots-0.1-py2.7.egg-info
我注意到安装了一个 .egg-info 文件。
ls -dl /Users/kevinlin/.virtualenvs/p-dots/lib/python2.7/site-packages/dots*
drwxr-xr-x 10 kevinlin staff 340 May 4 11:36 /Users/kevinlin/.virtualenvs/p-dots/lib/python2.7/site-packages/dots
-rw-r--r-- 1 kevinlin staff 205 May 4 11:36 /Users/kevinlin/.virtualenvs/p-dots/lib/python2.7/site-packages/dots-0.1-py2.7.egg-info
这是为什么呢?
1 个回答
5
曾经有讨论想把setuptools这个工具加入到Python 2.5的标准库里,后来又考虑只加入pkg_resource(setuptools的一部分)。但是因为各种原因,这个计划没有实现。核心开发者们意识到setuptools是一个很重要的第三方工具,于是决定做一个改动,让用纯distutils的setup.py安装的项目能够生成一个egg-info文件。这样,setuptools和基于它的工具就能知道这些项目已经被安装过了。
更改记录: http://hg.python.org/cpython/rev/93344da76acd
问题单: http://bugs.python.org/issue1459476
(我没有检查关于setuptools在2.5讨论的具体日期,所以我开头的说法可能不准确。不过,讨论的理由依然有效,可以参考那个问题单。)