[英]Including non-python files in a python package
我創建並發布了一個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 = {"gimpscm": ["gimpscm/procdump.txt"]},
include_package_data=True,
MANIFEST.in包含:
recursive-include gimpscm *.txt
像.py文件一樣,txt文件也包含在dist目錄的zip的gimpscm子目錄中。 但是當我pip install gimpscm
,根本沒有安裝該文件。
我以這種方式發布軟件包:
python setup.py sdist
twine upload dist/*
在pypi網站上,上傳的軟件包中確實包含txt文件,而pip install
卻沒有包含該文件。
到目前為止,此過程非常令人沮喪,並且Stackoverflow和其他站點沒有給出明確的答案。 我已經嘗試了MANIFEST.in和setup.py指令方法的每種組合。 它仍然不起作用。 Python文檔也太復雜了,我不清楚。
include_package_data
是setuptools
發行版的一部分,而不是distutils
一部分。
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": []})
您同時使用MANIFEST.in和package_data,因為您提供了兩個很容易彼此矛盾的事實來源,所以許多資料都不利於這種用法。
僅使用MANIFEST.in和include_package_data = True
其他來源: https : //blog.ionelmc.ro/presentations/packaging/#slide:15
解決方案是@ 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
這真是一個巨大的PITA。 謝謝您的回答!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.