python django webapp packaging sdist



当我运行python setup.py sdist在我的项目目录中,检查tar --list -f .distmy_project_name-1.0.tar.gz的内容,我希望看到一个重要的python文件(manage.py)和几个目录,如templates,其中包含。html文件,static包含。css文件。但是,这些文件在tar文件中都不见了。

我看了很多问题:Q1 Q2 Q3 Q4

,但添加MANIFEST.in或添加以下行到我的setup.py什么也没改变。那我的manage.py呢?python文件不应该默认包含在sdist中吗?

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得到了相同的结果(尽管我不确定这两个命令有什么区别)。

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

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

通常,Django应用程序不会与manage.py文件一起发布,但是如果你想包含它,你可以将py_modules=['manage']添加到setup关键字中(假设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(source distribution)和bdist_wheel(wheel binary distribution)只是独立的发行格式。

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

相关内容

  • 没有找到相关文章

最新更新