setup.py文件中的包

时间:2014-01-17 17:11:00

标签: python

我正在学习Python软件包,并试图了解这里的“软件包”行是什么。

install_requires将安装列表中给出的所有软件......那么,包的作用是什么?

from distutils.core import setup

setup(
    name='TowelStuff',
    version='0.1.0',
    author='J. Random Hacker',
    author_email='jrh@example.com',
    packages=['towelstuff', 'towelstuff.test'],
    scripts=['bin/stowe-towels.py','bin/wash-towels.py'],
    url='http://pypi.python.org/pypi/TowelStuff/',
    license='LICENSE.txt',
    description='Useful towel-related stuff.',
    long_description=open('README.txt').read(),
    install_requires=[
        "Django >= 1.1.1",
        "caldav == 0.1.4",
    ],
)

1 个答案:

答案 0 :(得分:4)

您可以查看disutils文档的这一部分,其中提供了完整的解释:http://docs.python.org/2/distutils/setupscript.html#listing-whole-packages

但简而言之,'packages'指的是你的代码,而不是外部依赖。如果您的setup.py文件位于项目的顶级目录中,并且您的'packages'参数列出了towelstuff和towelstuff.test,那么目录结构的外观如下:

setup.py
towelstuff
    __init__.py
    ...some other files in towelstuff...
towelstuff.test
    __init__.py
    ...some other files in towelstuff.test...
...some other scripts in the project directory...

基本上,Python包只是一个包含'__init__.py'文件的目录。当您编写setup.py文件时,您承诺setup.py有两个软件包(towelstuff和towelstuff.test)与setup.py脚本位于同一目录中。

将来,当您使用setup.py捆绑您的应用程序时,这两个包将包含在发行版中。