当我在项目目录中运行python setup.py sdist并使用tar --list -f .\dist\my_project_name-1.0.tar.gz检查内容时,我希望看到一个重要的python文件(manage.py)和几个目录,比如包含.html文件的templates和包含.css文件的static。但是,这些文件都在tar存档中丢失。
但是,向我的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中得到了相同的结果(虽然我不确定这两个命令有什么不同)。
发布于 2021-10-23 23:48:33
,我的manage.py呢?默认情况下,sdist不应该包含python文件吗?
不,默认情况下不会包括所有python文件。setup.py的另一个重要部分是packages和py_modules关键字。必须指定所有包和要包含的子包和模块。
一般来说,Django应用程序不是随manage.py文件一起分发的,但是如果您想包含它,可以将py_modules=['manage']添加到设置关键字中(假设manage.py与setup.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 (轮式二进制分发)只是单独的分发格式。
因此,与第一个命令相比,您只是告诉它构建源分发和一个轮子。添加bdist_wheel不会修改源发行版的构建方式。
https://stackoverflow.com/questions/69691638
复制相似问题