What is the difference between an 'sdist' .tar.gz distribution and an python egg?

后端 未结 2 801
伪装坚强ぢ
伪装坚强ぢ 2021-01-30 16:50

I am a bit confused. There seem to be two different kind of Python packages, source distributions (setup.py sdist) and egg distributions (setup.py bdist_egg).

Both seem

2条回答
  •  时光说笑
    2021-01-30 17:23

    There are many more than two different kind of Python (distribution) packages. This command lists many subcommands:

    $ python setup.py --help-commands
    

    Notice the various different bdist types.

    An egg was a new package type, introduced by setuptools but later adopted by the standard library. It is meant to be installed monolithic onto sys.path. This differs from an sdist package which is meant to have setup.py install run, copying each file into place and perhaps taking other actions as well (building extension modules, running additional arbitrary Python code included in the package).

    eggs are largely obsolete at this point in time. The favored packaging format now is the "wheel" format.

    Whether you create an sdist or an egg (or wheel) is independent of whether you'll be able to declare what dependencies the package has (to be downloaded automatically at installation time by PyPI). All that's necessary for this dependency feature to work is for you to declare the dependencies using the extra APIs provided by distribute (the successor of setuptools) or distutils2 (the successor of distutils - otherwise known as packaging in the current development version of Python 3.x).

    https://packaging.python.org/ is a good resource for further information about packaging. It covers some of the specifics of declaring dependencies (eg install_requires but not extras_require afaict).

提交回复
热议问题