如何在Python发行版中包含和访问数据文件?

时间:2018-10-03 15:37:01

标签: python setuptools

我想创建一个可分发的Python包。为此,我将目录组织如下:

.
├── config
│   └── test.yml
├── MANIFEST.in
├── sample
│   ├── hello.py
│   ├── __init__.py
│   └── world
│       ├── __init__.py
│       └── refer.py
└── setup.py

MANIFEST.in仅包含一行:

graft config

setup.py如下:

from setuptools import setup

setup(
    name='sample',
    version='1.0',
    packages=[
        'sample',
        'sample.world'
    ],
    include_package_data=True
)

但是,在运行pip install .之后,最终得到目标目录的以下内容:

.
./__pycache__
./__pycache__/__init__.cpython-36.pyc
./__pycache__/hello.cpython-36.pyc
./world
./world/__pycache__
./world/__pycache__/__init__.cpython-36.pyc
./world/__pycache__/refer.cpython-36.pyc
./world/refer.py
./world/__init__.py
./hello.py
./__init__.py

虽然我希望config及其包含的YAML文件在那里。我究竟做错了什么?谢谢!

1 个答案:

答案 0 :(得分:0)

下面是一些示例 setup.py ,它包含数据文件,并引用以查找该文件。

from setuptools import setup

setup(...
      packages=find_packages(),
      package_data={'': ['config/*.yml'],
                    },
...)

setup tools doc