python - 在 python 包中包含非 python 文件
问题描述
我创建并发布了一个 Python 包,但我无法让它包含一个文本文件。
这是存储库:https ://github.com/void4/gimpscm
我需要包含的文件是 procdump.txt,位于 gimpscm 目录中。
所以布局是这样的:
setup.py
setup.cfg
MANIFEST.in
gimpscm/
/__index__.py
/procdump.txt
/(other .py files)
我试过:
- 在 setup.py 中包含 package_data 指令
- 各种 MANIFEST.in 指令
当前的 setup.py 包括:
package_data = {"gimpscm": ["gimpscm/procdump.txt"]},
include_package_data=True,
并且 MANIFEST.in 包含:
recursive-include gimpscm *.txt
txt 文件与 dist 目录中 zip 的 gimpscm 子目录中的 .py 文件一样包含在内。但是当我pip install gimpscm
,该文件根本没有安装。
我以这种方式发布包:
python setup.py sdist
twine upload dist/*
在 pypi 网站上,上传的包确实包含 txt 文件,只是不包含在pip install
.
这个过程到目前为止一直非常令人沮丧,Stackoverflow 和其他网站都没有给出明确的答案。在每种组合中,我都尝试了 MANIFEST.in 和 setup.py 指令方法。它仍然不起作用。Python 文档对我来说也太复杂和不清楚。
解决方案
解决方案是@m.rp 和@vin 的答案的组合:
而不是from distutils.core import setup
使用
from setuptools import setup
在 setup() 调用中包含以下参数
include_package_data=True,
并且仅使用 MANIFEST.in 来包含文件,其中目录是相对于 MANIFEST.in 文件所在的位置指定的。
recursive-include gimpscm *.txt
这是一个多么巨大的皮塔饼。谢谢您的回答!
推荐阅读
- python - 无法用scrapy提取分页链接
- git - Gitlab 项目的“活动日志”显示错误用户推送的分支
- java - 二进制转换器 Java
- java - 在快速排序中计算比较和交换
- python - Celery任务突然停止执行,节点找不到彼此
- r - R 3.5 安装 Manjaro
- python - 如何使用从一个数据中切割的十分位切割另一数据?
- java - 根据填充的editTexts数量打开另一个活动
- wpf - WPF 如何手动设置控件的 Validation.HasError 属性?
- android - 使我的应用程序崩溃,然后通过模拟器运行应用程序(API 23 Android 6.0)