在 setup.py 中使用 `package_data` 包含没有 __init__.py 的非 Python 文件?

问题描述 投票:0回答:1

鉴于此目录结构(空

__init__.py
logging.yml
就可以了):

foo
│   setup.py
│
└─── foo
     │   __init__.py
     │
     └─── config
              logging.yml

这是我的尝试,这个

setup.py

from os import path
from setuptools import find_packages, setup

package_name = "foo"


if __name__ == "__main__":
    setup(
        name=package_name,
        packages=find_packages(),
        package_dir={package_name: package_name},
        package_data={"config":[path.join(package_name, "config", "logging.yml")]},
        include_package_data=True,
    )

# Also tried:
# package_data={"config": [path.join("config", "logging.yml")]}
# package_data={"": [path.join("config", "logging.yml")]}
# package_data={"": [path.join(package_name, "config", "logging.yml")]}

python setup.py install
之后没有错误(也尝试过
python -m pip install .
),但是从我的 virtualenv 根运行
fd -HIFuuueyml logging
没有返回任何结果,并且它在
foo.egg-info\SOURCES.txt
中不存在。

PS:使用3.13.0a5进行本地测试;安装工具 69.2.0;点 24.0。但在我的 CI 测试中,跨 Windows、Linux 和 macOS 发布到 2.7、3.5、3.6、3.7、3.8、3.9、3.10、3.11、3.12。

python setuptools setup.py egg data-files
1个回答
0
投票

这有效:

from setuptools import find_packages, setup

package_name = "foo"


if __name__ == "__main__":
    setup(
        name=package_name,
        packages=find_packages(),
        package_data={"foo": ["config/logging.yml"]},
        include_package_data=True,
    )

您只有 1(一)个包裹

foo
,因此您的
package_data
应该适用于此包裹。

© www.soinside.com 2019 - 2024. All rights reserved.