当我运行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
的另一个重要部分是packages
和py_modules
关键字。必须指定all要包含的包和子包和模块。
通常,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
(source distribution)和bdist_wheel
(wheel binary distribution)只是独立的发行格式。
因此,与第一个命令相比,您只是告诉它构建源代码发行版和车轮。添加bdist_wheel
并不会改变源代码的构建方式。