【问题标题】:Why is an egg-info file created when I'm using distutils?为什么我在使用 distutils 时会创建一个 egg-info 文件?
【发布时间】:2014-06-21 00:43:02
【问题描述】:

下面是我的 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

为什么?

【问题讨论】:

    标签: python setuptools distutils virtualenvwrapper


    【解决方案1】:

    讨论了将 setuptools 添加到 Python 2.5 的 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 讨论的日期,所以我的第一句话可能是错误的。理由仍然有效,请参阅票证。)

    【讨论】: