python - 如何将静态文件包含到 setuptools - python 包

标签 python package setuptools

我想将 ./static/data.txt 包含到 setuptools,这是我的代码:

# setup.py
import os,glob
from setuptools import setup,find_packages

setup(
    name = "PotatoProject",
    version = "0.1.1",
    author = "Master Splinter",
    author_email = "splinter@initech.com",
    description = ("The potatoproject!"),
    url = 'http://www.google.com',
    license = "BSD",

    # adding packages
    packages=find_packages('src'),
    package_dir = {'':'src'},

    # trying to add files...
    include_package_data = True,
    package_data = {
        '': ['*.txt'],
        '': ['static/*.txt'],
        'static': ['*.txt'],
    },

    scripts=['src/startPotato'],
    classifiers=[
        "Development Status :: 3 - Alpha",
        "Topic :: Utilities",
        "License :: OSI Approved :: BSD License",
    ],
)

文件系统:

.
├── setup.py
└── src
    ├── distutils_setup.py
    ├── Potato
    │   ├── __init__.py
    │   ├── potatoData.txt
    │   └── printer.py
    ├── startPotato
    ├── static
    │   └── data.txt
    └── Tomato
        ├── big.py
        └── __init__.py

运行时的输出:python setup.py sdist

running sdist
running egg_info
creating src/PotatoProject.egg-info
writing src/PotatoProject.egg-info/PKG-INFO
writing top-level names to src/PotatoProject.egg-info/top_level.txt
writing dependency_links to src/PotatoProject.egg-info/dependency_links.txt
writing manifest file 'src/PotatoProject.egg-info/SOURCES.txt'
reading manifest file 'src/PotatoProject.egg-info/SOURCES.txt'
writing manifest file 'src/PotatoProject.egg-info/SOURCES.txt'
warning: sdist: standard file not found: should have one of README, README.txt

creating PotatoProject-0.1.1
creating PotatoProject-0.1.1/src
creating PotatoProject-0.1.1/src/Potato
creating PotatoProject-0.1.1/src/PotatoProject.egg-info
creating PotatoProject-0.1.1/src/Tomato
making hard links in PotatoProject-0.1.1...
hard linking setup.py -> PotatoProject-0.1.1
hard linking src/startPotato -> PotatoProject-0.1.1/src
hard linking src/Potato/__init__.py -> PotatoProject-0.1.1/src/Potato
hard linking src/Potato/printer.py -> PotatoProject-0.1.1/src/Potato
hard linking src/PotatoProject.egg-info/PKG-INFO -> PotatoProject-0.1.1/src/PotatoProject.egg-info
hard linking src/PotatoProject.egg-info/SOURCES.txt -> PotatoProject-0.1.1/src/PotatoProject.egg-info
hard linking src/PotatoProject.egg-info/dependency_links.txt -> PotatoProject-0.1.1/src/PotatoProject.egg-info
hard linking src/PotatoProject.egg-info/top_level.txt -> PotatoProject-0.1.1/src/PotatoProject.egg-info
hard linking src/Tomato/__init__.py -> PotatoProject-0.1.1/src/Tomato
hard linking src/Tomato/big.py -> PotatoProject-0.1.1/src/Tomato
Writing PotatoProject-0.1.1/setup.cfg
creating dist
Creating tar archive
removing 'PotatoProject-0.1.1' (and everything under it)

并且没有添加 txt!没有 static/data.txt 也没有 Potato/potatoData.txt...

我错过了什么?!

最佳答案

正如评论中指出的,添加静态文件有两种方法:

1 - include_package_data=True + MANIFEST.in

setup.py 目录下的 MANIFEST.in 文件如下所示:

include src/static/*
include src/Potato/*.txt

setup.py 中使用 include_package_data = True

2 - setup.py 中的 package_data

package_data = {
    'static': ['*'],
    'Potato': ['*.txt']
}

指定setup.py中的文件。


不要在 setup.py 中同时使用 include_package_datapackage_data

include_package_data 将使 package_data 信息无效。

官方文档:
https://setuptools.readthedocs.io/en/latest/userguide/datafiles.html

关于python - 如何将静态文件包含到 setuptools - python 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11848030/

相关文章:

python - 在python中的指定行/列处合并二维数组(不同维度)

Python 单元测试。如何检查方法是否已实现而不是继承

python - PyCharm 编辑器和 Python 控制台 Unresolved reference

python - 在没有 root 访问权限的情况下安装 setuptools python 模块的简单方法?

python - 从具有更广泛命名空间的子目录前缀导入制作 setup.py?

python - ModuleNotFoundError : No module named <modulename> after pip install

python - PyQt 中的样式表伪状态语法

python - 从函数返回子图

java - 禁止包名称 : java

java - 为什么导入 javax.swing.* 而不是 java.swing.*