如何使用 setup.cfg 设置 Python 包配置文件

How to setup Python package config file using setup.cfg

我正在打包一个 Python 具有以下目录结构的项目:

package-main (located on Desktop)
   - my_package
       - __init__.py
       - datasets
       - plot.py
       - shapefiles
           - __init__.py
           - shapefile1
                - shapefile1.shp
                - shapefiel1.dbf
                - (and 4 other file formats)
           - shapefile2
                - shapefile2.shp
                - shapefiel2.dbf
                - (and 4 other file formats)
       - utils.py
       - states.py
       - my_package.egg-info
   - LICENSE.txt
   - setup.cfg
   - README.md
   - tests
   - docs
   - pyproject.toml
   - dist
   - my_package.egg-info

我 运行 遇到一个问题,当我将包 my_package 上传到 testPyPI,然后使用以下命令将包下载到我的本地计算机时:

pip install my_package

它没有下载所有文件。

当我创建一个 venv 来检查包文件,然后进入虚拟环境的包文件时,它只显示:

my_package
my_package-0.1.1.dist-info

当我打开 my_package 目录时,我看到的是以下结构:

my_package
   - __init__py
   - __pychache__
   - plot.py
   - shapefiles
        - __init__.py
        - __pychache__
   - states.py
   - utils.py

我已经确定 这一定与我设置 setup.cfg 文件的方式有关(也许我没有告诉它下载所有的包文件?

我当前的 setup.cfg 文件如下所示:

[options]
install_requires =
    numpy
    geopandas
    matplotlib
python_requires = >=3.6

packages = find:

我已经阅读了这里的 documentation for setuptools,但这并没有完全解决我的问题。我还需要告诉程序包下载形状文件。

我看过多个关于如何使用 setup.py 执行此操作的示例,但是由于 Python packaging tutorial 上有人建议我不使用此方法,因为它是动态的还是静态的,所以我没有能够在网上找到有关如何执行此操作的任何示例。

任何指向资源或示例的链接将不胜感激。

问题:如何更改 setup.cfg 文件以确保它下载包正常运行所需的所有文件?

编辑:

MANIFEST.in 文件如下所示:

include my_package/shapefiles/shapefile1/*.shp
include my_package/shapefiles/shapefile1/*.dbf

include my_package/shapefiles/shapefile2/*.shp
include my_package/shapefiles/shapefile2/*.dbf

根据 setuptools "Configuring setup() using setup.cfg files" 上的文档,您可以尝试以下操作:

[options]
...
include_package_data = True
...

[options.package_data]
* = *.dbf, *.shp, *.ext1, *.ext2, *.ext3, *.ext4