在setup.py文件中的包

4

我正在跟随一篇关于Python包的教程,并试图理解这里的“packages”行是做什么用的。

install_requires将安装列表中提供的所有软件...那么,packages是做什么的呢?

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个回答

5
你可以查看 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 捆绑应用程序时,这两个包将被包含在分发中。


+1 你的回答比我的更清晰。(删除我的回答) - mshildt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接