【问题标题】:python django webapp packaging sdistpython django webapp 打包 sdist
【发布时间】:2021-10-23 20:04:14
【问题描述】:

当我运行python setup.py sdist 在我的项目目录中并使用tar --list -f .\dist\my_project_name-1.0.tar.gz 检查内容我希望看到一个重要的python 文件(manage.py)和几个目录,例如包含.html 文件的templates 和包含.css 文件的static。但是,这些文件都从 tar 存档中丢失。

我看了很多问题:Q1Q2Q3Q4

但添加MANIFEST.in 或将以下行添加到我的setup.py 没有改变任何东西。我的manage.py 呢? sdist默认不应该包含python文件吗?

include_package_data=True,
data_files=[('templates','my_app/templates/my_app/*.html']),
            ('static', ['my_app/static/my_app/static/css/*.css'])]

另外,我得到与python setup.py sdist bdist_wheel 完全相同的结果(虽然我不确定这两个命令有什么区别)。

【问题讨论】:

  • 不,默认情况下不会包含所有 python 文件。 setup.py 的另一个重要部分是 packagespy_modules 关键字。您必须指定所有 要包含的子包和模块。你能显示你的MANIFEST.in 和完整的setup.py 的内容吗?存储库布局也可能有所帮助。

标签: python django packaging sdist


【解决方案1】:

我的 manage.py 呢? python文件不应该默认包含在sdist中吗?

不,默认情况下不会包含所有 python 文件。 setup.py 的另一个重要部分是 packagespy_modules 关键字。您必须指定所有要包含的子包和模块。

一般来说,Django 应用程序不会随 manage.py 文件一起分发,但如果您想包含它,可以在 setup 关键字中添加 py_modules=['manage'](假设 manage.pysetup.py 并排)。

要让您构建的发行版包含数据文件,例如模板和静态文件,您的MANIFEST.in 需要包含它们。您应该添加如下条目:

recursive-include my_app/templates *
recursive-include my_app/static *

不需要data_files 关键字。只需使用include_package_data=True,它就会尊重您的MANIFEST.in

另外,我使用 python setup.py sdist bdist_wheel 得到了相同的结果

sdist(源代码分发)和bdist_wheel(wheel 二进制分发)只是不同的分发格式。

因此,与第一个命令相比,您只是告诉它构建源代码分发和一个轮子。添加bdist_wheel 不会修改源代码分发的构建方式。

【讨论】:

    猜你喜欢
    • 2016-07-27
    • 1970-01-01
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 2012-10-17
    • 2019-01-26
    相关资源
    最近更新 更多