首页 > 解决方案 > 为什么不从 sdist tarball 安装 package_data?

问题描述

这是我编写的一个小包的 setup.py:

$ cat setup.py 
from setuptools import setup

setup(
    name="tracks",
    version="0.1",
    description="WSGI-Applikationen Tracks",
    packages=["tracks"],
    package_data={'': ["templates/*"]},
    install_requires=['flask', 'sqlalchemy', 'pandas', 'matplotlib',
        'geographiclib', 'colorbrewer', 'mysql'],
    zip_safe=False
)

当我从源目录运行“setup.py install”时,所有东西都安装在我的 venv 中,包括模板目录。当我执行 setup.py sdist --formats=gztar 时,templates/ 目录及其内容被复制到 tarball 中(我在“tar tvzf ...”中看到它),但是当我使用 pip 安装该 tarball 时,模板目录没有安装。

我已尝试按照setuptools 说明的这一部分进行操作。我究竟做错了什么?我对 pip 的理解是它解压缩 tarball,然后运行它在那里找到的 setup.py 脚本。当我“手动”执行此操作时,一切都已安装,因此 tarball 很好。

标签: pythonsetuptools

解决方案


为了正确打包数据文件,必须package_data的一部分。看起来包数据不包含在您的任何中,这是行不通的。在您的情况下,请确保您的templates目录位于tracks顶级包中。


推荐阅读