0

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

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

但是MANIFEST.in在 my 中添加或添加以下行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(尽管我不确定这两个命令有什么区别)。

4

1 回答 1

2

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

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

一般来说,Django 应用程序不会随 manage.py 文件一起分发,但如果您想包含它,您可以添加py_modules=['manage']到 setup 关键字(假设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不会修改源分发的构建方式。

于 2021-10-23T23:48:33.837 回答