为什么不从sdist tarball安装package_data?

时间:2019-09-29 18:09:52

标签: python setuptools

这是我写的一个小包装的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时,其内容的template /目录被复制到tarball中(我在“ tar tvzf ...”中看到它),但是当我使用pip安装该tarball时,这些模板目录未安装。

我已尝试遵循setuptools说明中的this section。我究竟做错了什么?我对pip的理解是,它解压缩了tarball,然后运行在那里找到的setup.py脚本。当我“手动”执行此操作时,一切都已安装,因此压缩包就可以了。

2 个答案:

答案 0 :(得分:0)

为了正确打包数据文件,package_data必须是 package 的一部分。看来包装数据没有包含在您的任何包装中,这是行不通的。就您而言,请确保您的templates目录位于您的tracks顶级软件包中。

答案 1 :(得分:0)

重新阅读文档后,我发现在setup()的参数中,必须设置package_data = [...]和install_package_data = True。