为什么我在使用distutils时会创建一个egg-info文件?

时间:2014-05-04 18:49:46

标签: python setuptools distutils virtualenvwrapper

以下是我的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 个答案:

答案 0 :(得分:2)

有关于为Python 2.5添加setuptools到stdlib的讨论,然后是关于仅添加pkg_resource(setuptools的一部分)的讨论。各种原因使得没有发生。核心开发人员认识到setuptools是一个重要的第三方工具,并且接受了使用pure-distutils setup.py编写这个egg-info文件来安装项目的更改,以使setuptools和基于它的工具能够知道这些项目已经安装好了。

变更集:http://hg.python.org/cpython/rev/93344da76acd

票证:http://bugs.python.org/issue1459476

(我没有查看关于setuptools的2.5讨论的日期,所以我的第一句话可能是错的。理由仍然有效,请看门票。)