ImportError: Немає імені "_tkinter", встановіть пакунок python3-tk


28

Я новачок у Ubuntu та Linux взагалі.

Я створив подвійну завантажувальну ОС на своєму ноутбуці (Windows 10 та Ubuntu).

  • Введення тексту sudo apt-get install python3-tk(або навіть python-tk) не спрацювало.
  • Спроба встановити python3-devабо python-devel(не пощастило).
  • Завантаження Tcl та Tk для встановлення вручну.

У підсистемі Windows 10 Bash Tk і Tcl вже включені, тому я подумав, що Ubuntu це вже є. Але я хочу використовувати свій робочий стіл Ubuntu для розробки додатків графічного інтерфейсу Python.

Отже, як я можу встановити Tcl / Tk для використання в Python 3.5 для розвитку графічного інтерфейсу?

Я завантажив Python 3.5.2 штрафу, але мені потрібні модулі GUI.

Код для перевірки роботи Tk:

  1. Тип python3
  2. Тип:

    import tkinter   
    tkinter._test()
  3. Результат: відображення спливаючого інтерфейсу GUI This is a Tcl/Tk version..


3
"Я завантажив Python 3.5.2" - як саме? якщо ви працюєте з встановленим вручну python, то встановлення системних пакетів python з apt-get навряд чи допоможе
steeldriver

1
Я побачив, що ваша відповідь на ваше власне питання полягає в тому, щоб компілювати Tcl / Tk з джерела, але я не думаю, що це потрібно, якщо ви вручну не встановили Python, тобто без використання менеджера пакетів Apt. Чи можете ви уточнити, чи встановили ви Python вручну? Установка python3-tkта запуск коду Python, який ви надали, працює у моїй системі Python 3.
edwinksl

Відповіді:


30

sudo apt-get install python3-tkВстановлення tkinterдля Python3.xx

Джерела:

https://stackoverflow.com/questions/6084416/tkinter-module-not-found-on-ubuntu https://pythonprogramming.net/python-3-tkinter-basics-tutorial/


6
Примітка - для python3.6, в якому python3.5 був моїм замовчуванням, я повинен був використовувати ... встановити python3.6-tk ....
SteveJ

+1. Я хотів би додати для тих, хто читає це, що tkinter, схоже, не має пакету PyPI, так що використання диспетчера пакетів Ubuntu, як пропонується у цій відповіді, є, ймовірно, наступним найкращим варіантом.
dpritch

1
@dpritch Існує пакет доступний в репозиторії Universe називається [pypibrowser] ( packages.ubuntu.com / ... поставляє функціональності Я вважаю , що ви шукаєте Привітання.!
Elder Geek

python3-tkinterдля мене на Fedora dnfпринаймні.
Pysis

@Pysis Вибачте за будь-яку плутанину, яку ви могли пережити. Ця відповідь, як і весь цей сайт, стосується Ubuntu. Ви можете отримати перевагу від туру. Перше речення робить це досить зрозумілим, якщо ні, то тут можна отримати ще більшу чіткість . Ура!
Старійшина Гік

26

Для віртуального середовища python 3.6 з Python 3.5 як "системного" python (Ubuntu) мені довелося встановити tk 3.6, щоб відповідати;

sudo apt-get install python3.6-tk

У моєму пітоні за замовчуванням в ubuntu було 3,5, тому при використанні venv для 3.6 я отримав би помилку імпорту. На деякий час мене зводить з розуму.

[Редагувати: з віком це питання]

Загалом, здається, що якщо ви використовуєте віртуальне середовище з пітоном іншої версії, ніж версія базової машини, потрібно встановити tk для версії python, що використовується у віртуальному середовищі.

sudo apt install python3.x-tk

Де 3.x відповідав би версії віртуального середовища.

[Редагувати]

Може знадобитися додати сховище для tk. На мій досвід, це було те саме сховище, з якого я витягнув python3.6, але це може змінитися з часом;

sudo add-apt-repository ppa:deadsnakes/ppa

1
Цікаво. Ви можете піти так далеко, щоб пояснити, з якого PPA ви встановили його, наскільки я бачу, python3.6-tk не існує в сховищах на даний момент.
Старійшина Гік

1
Я зробив подальше редагування, намагаючись зробити його більш актуальним.
Старійшина Гек

3
ОКОНЧНО! Це для мене працювали, коли sudo apt-get install python3-tkцього не робили. Спасибі
Пітер

2
Для python 3.7 мені довелося скористатися, sudo apt-get install python3.7-tkщоб він працював
ilias

Це було все. Єдине рішення, яке працювало для мене на дванадцяти сторінках Stackoverflow.
Авіо

0

Це може бути цікаво при встановленні з джерела (що більшість користувачів python не буде):

Після встановлення tcl і tk .

Поверніться до вашої версії Python make. І, якщо існує кілька версій python, зробіть make altinstall.

  1. Відкрийте Python3.5
  2. тип:

    import tkinter
    tkinter._test()
  3. результати ОК - поп-графічний інтерфейс відкрився та працює як очікувалося.


2
-1 Це не стосується більшості людей, оскільки більшість встановить через менеджер пакунків, а не з джерела.
RockJake28

додано введення, так що це НЕ буде заплутувати і ще може допомогти кому - то
міт

0

У моєму випадку я отримував ту саму помилку, що і "ImportError: Немає модуля з ім'ям" _tkinter "" для python3.5, незважаючи на наступні дії: - Встановлення python3-tk та tkinter-dev - Каталог Tkinter доступний в / usr / lib / python3.5.

Помічена помилка була з наступного файлу:

Файл "/usr/local/lib/python3.5/tkinter/ init .py", рядок 35, import _tkinter # Якщо це не вдалося, ваш Python не може бути налаштований для Tk

Однак, коли я просто запустив python з / usr / bin, як /usr/bin/python3.5 з терміналу, він працював на мене!

Коротше кажучи, просто переконайтеся, що версія python, запущена з терміналу, встановила та налаштувала tkinter :)

У мене в моїй системі встановлений Ubuntu16.04, який поставляється з типовими python2.7 та python3.5


0

Установка лише файлів бібліотеки може не працювати, оскільки ви хочете використовувати бібліотеку, а не розробляти її.

Це працювало для мене:

$ sudo apt install tk8.6-dev

хоча це може відповісти на питання, можливо, ви можете розширити його, щоб пояснити, що робить вищевказана команда і чому вона може вирішити проблему?
Джошуа Беснеатте

ismailarilik Те, що @JoshuaBesneatte намагається сказати, це: не просто дайте запитувача команди, але поясніть, що виконують команди, і чому він / вона повинна застосовувати їх. На даний момент ваша відповідь, ймовірно, буде видалена через відсутність якості ... :-(
Fabby
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.