包含setup.py的数据文件

时间:2017-07-17 15:14:31

标签: python setuptools packaging setup.py

我在setup.py脚本中包含数据文件时遇到问题。我的包装设置如下:

my_package/
    setup.py
    MANIFEST.in

    my_package/
        __init__.py
        access_data.py

        data_files/
            my_data_file.csv

我希望在安装时包含my_data_file.csv文件,以便access_data.py可以读取它。为此,我在package_data中使用了setuptools关键字:

setup(...,
      packages=['my_package'],
      package_data={'my_package': ['./my_package/data_files/my_data_file.csv']},
      include_package_data=True
      )

我还将文件包含在MANIFEST.in

recursive-include my_package/data_files *

setup.py似乎运行良好并且不会抛出任何错误。但是,当我导入包时,我收到一个找不到文件的错误,因为缺少my_data_file.csv。我已经尝试引用其他堆栈溢出问题(特别是this one),但无法弄清楚我做错了什么。如何让setup.py包含必要的数据文件?

1 个答案:

答案 0 :(得分:4)

如果它列在setup.py的{​​{1}}中(正确),则不需要将其包含在package_data中(因为它会自动包含在内)

在您的情况下,错误在于您的MANIFEST.in行,路径相对于命名空间的根

在你的情况下应该是:

package_data

另请注意,包数据中的键是虚线模块路径(但它与此玩具箱并不相关)。