Я использую Linux Ubuntu 22.10.
Итак, я установил Tkinter с помощью этой команды:
python3 -m pip install tk
и вывод был в порядке:
Defaulting to user installation because normal site-packages is not writeable
Collecting tk
Using cached tk-0.1.0-py3-none-any.whl.metadata (693 bytes)
Using cached tk-0.1.0-py3-none-any.whl (3.9 kB)
Installing collected packages: tk
Successfully installed tk-0.1.0
поэтому я попытался использовать модуль; Я написал базовый файл для отображения окна:
import tk
window = tk.Tk()
window.mainloop()
а потом мне выдали эту ошибку: AttributeError: module 'tk' has no attribute 'Tk'.
хах, странно. Я проверил, какие функции есть у модуля, и, судя по всему, не что иное, как __init__, который пуст!
Как это исправить?
Обновлено: информация может быть изменена. Этот вопрос — крушение поезда.
Ох, видимо я дал слишком много информации. Я спрашиваю, почему файл инициализации пуст и как это исправить.
То, что __init__.py пусто, вполне нормально. Есть ли у вас основания полагать, что в нем что-то должно быть?
tkinter, который на самом деле включен в стандартную библиотеку Python, и поэтому его не нужно устанавливать отдельно.
Я действительно пытался использовать import tkinter, но он сказал, что модуль не найден. P.S. простите за глупость, но быть пустым - это нормально? Некоторое время назад я обнаружил ошибку внутри модуля, и он сказал, что ошибка возникла из-за функции в init, поэтому я предположил, что именно здесь и происходит вся магия.
Давайте перепишем вопрос примерно так: "почему нет других файлов"
Возможный дубликат: stackoverflow.com/questions/4783810/install-tkinter-for-pythна (это объясняет, почему tkinter отсутствует в Ubuntu и как его правильно установить).
Как уже упоминалось, tkinter входит в стандартную библиотеку, так зачем искать файлы в site-пакетах?
Метод __init__ отличается от файла __init__.py, который должен существовать, но часто не должен ничего содержать, чтобы каталог был действительным (не относящимся к пространству имен) пакетом Python. Возможно, см. также stackoverflow.com/questions/448271/what-is-init-py-for
Почему-то кажется, что это не так. Когда я пытаюсь его импортировать, он почему-то не существует. Может быть связано с stackoverflow.com/questions/76105218/….
@triplee Ой, подожди, это другое? Ах, окей.
Использование apt-get для установки tkinter почему-то не работает на моей машине. В нем говорится, что некоторые пакеты не найдены, но и apt-get update их не находит.
Как только вы доберетесь туда, источник станет не таким уж интересным. Tkinter на самом деле представляет собой набор скриптов, написанных на языке tcl. Код Python просто запускает внутренний интерпретатор tcl и создает командные строки для выполнения tcl.






Пакет, который вы установили, называется тк и он совершенно не связан с tkinter (хотя похожие названия неудачны); это пакет машинного обучения, также называемый TensorKit, который предоставляет несколько файлов в подкаталоге с именем structure (но на самом деле, как ни странно, в самом пакете tk ничего нет).
Для __init__.py вполне нормально быть пустым; этот файл является обязательным для пакета Python (не относящегося к пространству имен), но часто он вообще ничего не должен содержать. См. также Для чего нужен __init__.py?
Между тем, tkinter отсутствует на некоторых платформах по разным причинам. Чтобы установить tkinter в Ubuntu, apt-get install python3-tk. См. также Установите tkinter для Python.
Этот вопрос похож на крушение поезда, поэтому, возможно, будет лучше, если вы не проголосуете за этот ответ и не примете его, а позволите вопросу быть удаленным, когда придет время.
Для меня apt-get не работает. Он не может найти Tkinter. Я попробовал обновить apt-get, но это тоже не работает.
Вы использовали правильное имя пакета python3-tk? Какой результат apt-cache policy python3-tk? Вероятно, задайте новый вопрос в Спросите Ubuntu, если не можете разобраться.
да, я сделал. Я, вероятно, отмечу этот вопрос и задам вопрос в Ask Ubuntu.
Хорошо! Я починил это! Только что проверил это: Askubuntu.com/questions/1131280/… И это все исправило. Ура!
Что вам нужно объяснить?