Python django webapp packaging sdist
Когда я запускаю python setup.py sdist
в каталоге моего проекта и проверяю содержимое с помощью tar --list -f .\dist\my_project_name-1.0.tar.gz
я вижу, что один важный файл python (manage.py
) и пара каталогов templates
, который содержит .html файлы, и static
, содержащий .css файлы, отсутствуют.
Я рассмотрел много вопросов: 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
. Вы должны указать все пакеты и подпакеты и модули, которые вы хотите включить.
Обычно приложения 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
не изменяет способ сборки исходного дистрибутива.