Недавно я столкнулся с проблемой при установке новейшего python3.X.
Установил его с помощью Python-3.4.2.tar.xz
пакета из python.org
После установки попытался импортировать tkinter
модуль, но не получилось.
Результат import tkinter
был следующим:
>>> импорт tkinter Трассировка (последний вызов последний): Файл "", строка 1, в Файл "/usr/local/lib/python3.4/tkinter/__init__.py", строка 38, в import _tkinter # Если это не удалось, ваш Python, возможно, не настроен для Tk ImportError: Отсутствует модуль с именем «_tkinter»
Я также попробовал следующие решения:
но ни один из них не помог.
При попытке этих решений, если заметил, что ошибка говорит:
import _tkinter # Если это не удалось, ваш Python, возможно, не настроен для Tk
затем я погуглил об этом и нашелэтот.
ЧтениеПроверка поддержки Tkinterраздел, Step 1
не удалось и застрял в этой строке
Если вы устанавливаете Tcl/Tk в расположениях по умолчанию, простой повторный запуск «make» должен собрать расширение _tkinter.
Что касается вышеприведенной строки, мой вопрос:
где найти make-файл для запуска make
команды?
И как мне настроить его tkinter
так, чтобы Python3.4.2 его принял?
РЕДАКТИРОВАТЬ:
Я забыл упомянуть, но import tkinter
это работает для стандартной установки (Python-3.4.0) Python в Ubuntu 14.04.1
решение1
Для сборки python3.4.2 из исходного кода с _tkinter
модулем вам необходимо установить следующую зависимость сборки:
sudo apt-get install tk8.6-dev
Затем вам останется только запустить его make
еще раз, чтобы добавить _tkinter
поддержку, поскольку setup.py
файл автоматически обнаружит заголовки tk/tcl и создаст модуль:
~/Downloads/Python-3.4.2$ make
running build
running build_ext
building '_tkinter' extension
gcc -pthread -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -DWITH_APPINIT=1 -I/usr/include/tcl8.6 -I/usr/X11/include -I./Include -I. -IInclude -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/sylvain/Downloads/Python-3.4.2/Include -I/home/sylvain/Downloads/Python-3.4.2 -c /home/sylvain/Downloads/Python-3.4.2/Modules/_tkinter.c -o build/temp.linux-x86_64-3.4/home/sylvain/Downloads/Python-3.4.2/Modules/_tkinter.o
gcc -pthread -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -DWITH_APPINIT=1 -I/usr/include/tcl8.6 -I/usr/X11/include -I./Include -I. -IInclude -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/sylvain/Downloads/Python-3.4.2/Include -I/home/sylvain/Downloads/Python-3.4.2 -c /home/sylvain/Downloads/Python-3.4.2/Modules/tkappinit.c -o build/temp.linux-x86_64-3.4/home/sylvain/Downloads/Python-3.4.2/Modules/tkappinit.o
gcc -pthread -shared build/temp.linux-x86_64-3.4/home/sylvain/Downloads/Python-3.4.2/Modules/_tkinter.o build/temp.linux-x86_64-3.4/home/sylvain/Downloads/Python-3.4.2/Modules/tkappinit.o -L/usr/X11/lib -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -ltk8.6 -ltcl8.6 -lX11 -o build/lib.linux-x86_64-3.4/_tkinter.cpython-34m.so
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2 _dbm _gdbm
_lzma _sqlite3
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
[...]
Теперь вы можете импортировать tkinter в python3.4.2:
~/Downloads/Python-3.4.2$ ./python
Python 3.4.2 (default, Oct 30 2014, 11:34:17)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>>
Оригинальный ответ:
Если вам действительно не нужен python3.4.2, я бы просто использовал версию python3 по умолчанию в 14.04 (3.4.0)
Затем вам останется только установить следующие пакеты:
sudo apt-get install python3-tk tk
И запустите интерпретатор Python следующим образом:
/usr/bin/python3
В противном случае вы всегда получите версию, которую установили в /usr/local
(3.4.2).
Импорт tk в python3 теперь должен работать:
$ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>>
решение2
Если вам нужен tkinter только для matplotlib, вы также можете использовать другой бэкэнд, например Egg: import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt
Смотреть больше подробностейздесь
решение3
sudo apt-get install python3-tk tk
pyenv install 3.5.0
вот и все
решение4
Просто чтобы вы знали, я использую Ubuntu 16.04. Добавлю к первому ответу, сделайте эти вещи из файла python (после извлечения):
./configure #(there will be a configure file)
make
make test
sudo make install
Я сделал это в первый раз, но мне все равно показывали следующие ошибки:
IDLE can't import Tkinter. Your Python may not be configured for Tk.
при запуске python3 -m idlelib.idle
из cmd.
Так я и сделал:
sudo apt-get install tk-dev
или вы можете сделать
sudo apt-get install tk8.6-dev
затем снова
./configure
make
make test
sudo make install
Это решило проблему, так как при следующем запуске
python3 -m idlelib.idle
открылся IDLE.