在python包中包含非python文件

2024-09-30 20:27:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建并发布了一个Python包,但是我不能让它包含一个文本文件。在

这是存储库:https://github.com/void4/gimpscm

我需要包括的文件是程序转储.txt,位于gimpscm目录中。在

所以布局是这样的:

setup.py
setup.cfg
MANIFEST.in
gimpscm/
       /__index__.py
       /procdump.txt
       /(other .py files)

我试过了:

  • 在中包含package\u data指令设置.py在
  • 各种各样的清单.in指令

电流设置.py包括:

^{pr2}$

以及清单.in包含:

recursive-include gimpscm *.txt

txt文件像.py文件一样包含在dist目录中zip的gimpscm子目录中。但是当我pip install gimpscm时,文件根本就没有安装。在

我是这样发布包的:

python setup.py sdist
twine upload dist/*

在pypi网站上,上传的包包含txt文件,只是没有包含在pip install上。在

到目前为止,这个过程非常令人沮丧,Stackoverflow和其他网站并没有给出明确的答案。我都试过了清单.in以及设置.py指导性方法,在每一个组合中。还是不行。Python文档对我来说也太复杂和不清楚。在


Tags: installpip文件inpyhttpsgithub目录
3条回答

你两个都用清单.in而打包数据,许多来源不鼓励这种使用,因为你给出的两个真相来源很容易相互矛盾。在

只使用清单.in并且include_package_data=True

其他来源: https://blog.ionelmc.ro/presentations/packaging/#slide:15

include_package_datasetuptools发行版的一部分,而不是{} 试试下面的方法

  from setuptools import setup, find_packages

  setup(name="",
        version="0.1.0",
        packages=find_packages(),
        include_package_data=True,
        setup_requires=["pytest-runner"],
        tests_require=["pytest",
                       "mock"],
        test_suite="pytest",
        install_requires=[],
        entry_points={"console_scripts": []})

解决方案是@m.rp和@vin的答案的组合:

而不是from distutils.core import setup 使用

from setuptools import setup

在setup()调用中包含以下参数

^{pr2}$

只使用清单.in要包含文件,目录是相对于清单.in文件是。在

recursive-include gimpscm *.txt

这是什么大皮塔。谢谢你的回答!在

相关问题 更多 >