python distutils 不包含 data_files

19 投票
2 回答
6067 浏览
提问于 2025-04-15 23:41

我刚接触distutils这个工具.. 我想在打包的时候把一些数据文件也一起包含进去.. 这是我的代码..

from distutils.core import setup

setup(name='Scrapper',
      version='1.0',
      description='Scrapper',      
      packages=['app', 'db', 'model', 'util'],
      data_files=[('app', ['app/scrapper.db'])]      
     )

执行完 python setup.py sdist 后生成的压缩文件里没有包含scrapper.db这个文件。我在应用程序的目录里有这个scrapper.db文件..

谢谢大家的帮助。

2 个回答

1

试着把MANIFEST文件删掉,这样distutils就会被迫重新生成这个文件。

注意:我一直在用python 3.x,所以我不知道这个方法在2.x上是否有效。

21

你可能需要添加一个 MANIFEST.in 文件,里面包含 "include app/scrapper.db" 这行内容。

这是因为 distutils 里有个小问题,导致这个文件是必须的:在 data_filespackage_data 里面的任何东西应该自动包含在生成的 MANIFEST 文件里。但是在 Python 2.6 及之前的版本中,它并不会这样做,所以你得在 MANIFEST.in 里手动添加它。

这个问题在 Python 2.7 里已经修复了。

撰写回答