2011-07-15 34 views
8

我有一个setup.py文件看起来像这样的数据文件:setuptools的:包含`bdist`但不能以`sdist`

#!/usr/bin/env python 
from setuptools import setup, find_packages 

setup(
    name="foo", 
    version="1.0", 
    packages=find_packages(), 
    include_package_data=True, 
    package_data={ 
     "": ["*"], 
    }, 
) 

和包装foo它看起来像这样:

foo/__init__.py 
foo/bar.txt 

当我运行setup.py bdist时,bar.txt文件(正确)包含在发行版中......但是当我使用setup.py sdist时,它不是。

这是怎么回事?我误解了package_data的含义吗?或者这是一个setuptools的怪癖?

回答

10

选择这些文件有不同的来源。 package_data用于从源代码树进行安装。构建一个源代码包你还需要一个MANIFEST.in文件。它应该包含类似recursive-include *.txt或任何你需要的东西。

+2

啊...那么,在什么情况下我会使用'package_data'呢? –

+5

清单确定源分布中包含的内容,但是package_data是用于确定要与包位置(site-packages)中的源Python文件一起安装的任何数据文件的内容。 MANIFEST.in中的这些文件可能不是文档或其他您不希望在那里安装的文件,但需要在源代码分发中。 – Keith

相关问题