Почему я вижу "No module named '_tkinter" при развертывании django на heroku?

django хорошо работает на моей локальной машине. Но когда я развертываю его на heroku, я вижу "ModuleNotFoundError" "No module named '_tkinter'". Хотя я никогда не импортировал "_tkinter" или "tkinter" в свой код. Ваша помощь будет оценена по достоинству. Спасибо.

ModuleNotFoundError at /

Отсутствует модуль с именем '_tkinter'

Метод запроса: GET URL запроса: https://howididit.herokuapp.com/. Версия Django: 4.0.6 Тип исключения: ModuleNotFoundError Значение исключения:

Отсутствует модуль с именем '_tkinter'

Exception Location: /app/.heroku/python/lib/python3.10/tkinter/init.py, строка 37, in Python Executable: /app/.heroku/python/bin/python Версия Python: 3.10.5 Путь к Python:

['/app/.heroku/python/bin', '/app', '/app/.heroku/python/lib/python310.zip', '/app/.heroku/python/lib/python3.10', '/app/.heroku/python/lib/python3.10/lib-dynload', '/app/.heroku/python/lib/python3.10/site-packages']

Если вы не используете Tkinter, просто удалите его из /forms.py., иначе он будет импортирован.

Если вы хотите использовать tkinter, то рассмотрите следующий процесс

попробуйте добавить tkinter в ваш файл requirements.txt. Если и после этого ничего не получается, проверьте, добавлен ли у вас билдпак Python. Если оба случая прошли, попробуйте зайти в свой экземпляр Heroku и выполнить следующую команду:

sudo apt install python3-tk

Это установит библиотеку Tkinter в вашем экземпляре Heroku. Это устранит вашу ошибку.

Я обнаружил, что эти from pyexpat import model from turtle import title from attr import fields были импортированы в мой forms.py. После их удаления проблема была решена. Еще раз, спасибо всем вам, ребята, за ваше время, я очень ценю его.

Итак, для тех, кто будет смотреть на это в будущем и биться головой об стол... вот что сработало для меня:

Я начал с нового приложения Hello World и начал добавлять кусочки моего оригинального кода, пока не дошел до ошибки

обнаружил, что один из модулей, который я использовал: icu, использует tkinter, и мне нужно установить модуль Pyicu вместо него

pip устанавливается непосредственно в bash-консоль heroku, а не через мое приложение

Ни один из ответов, которые я нашел в Интернете, не помог мне, и я думаю, что эта ошибка возникает не из-за наличия tkinter непосредственно в вашем приложении, а из-за другого модуля, который вызывает его.

Когда есть сомнения, сделайте то, что сделал я, начните новый проект с нуля и добавляйте куски кода, пока не получите ошибку, чтобы увидеть, какой модуль ее создает

Не забудьте изменить DEBUG на False в файле настроек

Вернуться на верх