鉴于此目录结构(空
__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。
这有效:
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
应该适用于此包裹。