包含 setup.py 的数据文件

Including data files with 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 可以读取它。为此,我在 setuptools:

中使用了 package_data 关键字
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 包含必要的数据文件?

如果它在 setup.pypackage_data 中列出(正确),则不需要将其包含在 MANIFEST.in 中(因为它将自动包含)

在你的例子中,错误出在你的 package_data 行,路径是相对于命名空间的根

在你的情况下应该是:

package_data={'my_package': ['data_files/my_data_file.csv']},

另请注意,包数据中的关键是点缀的模块路径(然而,它与这个玩具箱并不是特别相关)。