lỗi matplotlib - không có mô-đun có tên tkinter


194

Tôi đã thử sử dụng gói matplotlib qua Pycharm IDE trên windows 10. khi tôi chạy mã này:

from matplotlib import pyplot

Tôi nhận được lỗi sau đây:

ImportError: No module named 'tkinter'

Tôi biết rằng trong python 2.x nó được gọi là Tkinter, nhưng đó không phải là vấn đề - Tôi vừa cài đặt một python hoàn toàn mới 3.5.1.

EDIT: ngoài ra, tôi cũng đã cố gắng nhập 'tkinter' và 'Tkinter' - cả hai đều không hoạt động (cả hai đều trả về thông báo lỗi tôi đã đề cập).


Bạn đã nhập tkinter bằng import Tkinterhay import tkinterchưa?
Avión

1
vâng, quên đề cập rằng ... đã nhận được thông báo lỗi tương tự
noamgot

ImportError: No module named '_tkinter', please install the python3-tk package?
knh170

@ knh170 không, chỉ đơn giản là thông báo hiển thị trong bài viết gốc của tôi.
noamgot

4
có vẻ như bạn đã sử dụng cài đặt tùy chỉnh. Chạy lại trình cài đặt python, nhấn sửa đổi và sau đó đánh dấu td / tk và IDLE
omilus

Câu trả lời:


221
sudo apt-get install python3-tk

Sau đó,

>> import tkinter # all fine

Chỉnh sửa :

Đối với Windows, tôi nghĩ vấn đề là bạn đã không cài đặt gói Python hoàn chỉnh. Vì Tkinter nên được vận chuyển với Python ra khỏi hộp. Xem: http://www.tkdocs.com/tutorial/install.html

Tôi đề nghị cài đặt ipython , cũng cung cấp shell mạnh mẽ và các gói cần thiết.


NÓ ĐANG LÀM VIỆC! cảm ơn! (Tôi đã cài đặt anaconda thông qua liên kết bạn đặt trong bài đăng của mình)
noamgot

3
nếu bạn đang sử dụng hộp CentOS, lệnh làsudo yum install python36u-tkinter.x86_64
n1c9

Tôi đang sử dụng pycharm và tôi đã gặp lỗi tương tự liên quan đến gói bị thiếu. Sau khi cài đặt gói tkinter matplotlib hoạt động tốt. Cảm ơn bạn @ knh170
debaonline4u

Đã làm việc với tôi với Ubuntu 18.04 bằng python3 trong venv. Chỉ cần cài đặt nó: sudo apt-get install python3-tk Sau đó, bạn có thể kiểm tra là từ python3 shell: từ matplotlib nhập pyplot
serfer2

1
@ knh170 Chúng ta có thể cài đặt tkinter bằng pip không? Tôi không thể tìm kiếm bất cứ điều gì liên quan đến điều này
Scott Yang

99

bạn có thể dùng

import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt

Nếu bạn không muốn sử dụng tkinterở tất cả.

Cũng đừng quên sử dụng %matplotlib inlineở đầu sổ ghi chép của bạn nếu sử dụng nó.

EDIT: agglà một phụ trợ khác nhau như tkintercho matplotlib.


1
Điều này thật tuyệt, vì làm việc với máy chủ mà tôi không yêu cầu và có X11, nhưng một số chương trình tôi đã cài đặt có sự phụ thuộc vào matplotlib.
rien333

2
Tuyệt diệu! Trong trường hợp bất cứ ai đang tự hỏi làm thế nào điều này hoạt động
Matt

2
giải pháp này không hiệu quả nếu bạn muốn vẽ một cái gì đó
Beyhan Gül

4
Chỉ cần thêm vào câu trả lời này: agglà một phụ trợ không phải GUI, vì vậy plt.show()sẽ không có bất kỳ ảnh hưởng nào. Nhưng bạn vẫn có thể làm plt.savefig(filename)và nhìn vào tệp để gỡ lỗi nhanh.
Nico

1
Tiết kiệm cho tôi thời gian từ việc xử lý lỗi tkinter này.
annoying_squid

35

Trên Centos, tên gói và lệnh khác nhau. Bạn sẽ cần phải làm:

sudo yum install tkinter

Để khắc phục sự cố.


29

Đối với người dùng Windows , không cần phải tải xuống trình cài đặt nữa. Chỉ cần làm như sau:

  1. Chuyển đến menu bắt đầu, nhập Chương trình và Tính năng ,
  2. Chọn phiên bản Python (đối với tôi là Python 3.6.5 (64-bit) ),
  3. Nhấp chuột phải, nhấn Change ,
  4. Nhấp vào Sửa đổi ,
  5. Chọn td / tk và IDLE (cài đặt tkinter) và nhấp vào tiếp theo .

Đợi cài đặt và bạn đã hoàn tất.


4
Cảm ơn bạn. Đó là câu trả lời hữu ích và đúng đắn nhất trong số những người khác. (Tất nhiên đối với người dùng hệ điều hành Windows)
Ruslan K.

20

Hầu như tất cả các câu trả lời tôi đã tìm kiếm về vấn đề này đều nói rằng Python trên Windows đi kèm với tkinter và tcl đã được cài đặt và tôi không gặp may khi thử tải xuống hoặc cài đặt chúng bằng cách sử dụng trang web pip, hoặc trang web actviestate.com. Cuối cùng tôi đã phát hiện ra rằng khi tôi cài đặt python bằng trình cài đặt nhị phân, tôi đã bỏ chọn mô-đun liên quan đến TCL và tkinter. Vì vậy, tôi đã chạy lại trình cài đặt nhị phân và chọn sửa đổi phiên bản python của mình bằng cách chọn tùy chọn này. Không cần phải làm bất cứ điều gì bằng tay sau đó. Nếu bạn đi đến thiết bị đầu cuối python của mình, thì các lệnh sau sẽ hiển thị cho bạn phiên bản tkinter được cài đặt với Python của bạn:

import tkinter
import _tkinter
tkinter._test()

1
Chính xác. Cài đặt Windows là hệ thống duy nhất có thể xảy ra - như trường hợp của tôi. +1. Điều này chắc chắn đáng chú ý cho người dùng có cài đặt Windows.
marcushobson

18

Nếu bạn đang sử dụng fedora thì trước tiên hãy cài đặt tkinter

sudo dnf install python3-tkinter

Tôi không nghĩ bạn cần nhập tkinter sau đó tôi cũng đề nghị bạn sử dụng virtualenv

$ python3 -m venv myvenv
$ source myvenv/bin/activate

Và thêm các gói cần thiết bằng cách sử dụng pip


10

Trên CentOS 7 và Python 3.4, lệnh là sudo yum install python34-tkinter

Trên Redhat 7.4 với Python 3.6, lệnh là sudo yum install rh-python36-python-tkinter


3
Trên Centos 7 và Python 3.6, lệnh làsudo yum install python36u-tkinter.x86_64
Rob Hall

8

Đối với người dùng windows, chạy lại trình cài đặt. Chọn Sửa đổi. Chọn hộp cho tcl / tk và IDLE. Mô tả cho điều này nói "Cài đặt tkinter"


8

Trên Ubuntu, đầu năm 2018, không có bản python3.6-tkphân phối bình thường nào của ubfox (xenial / 16.04), vì vậy ngay cả khi bạn có các phiên bản trước đó của bản python-tknày sẽ không hoạt động.

Giải pháp của tôi là sử dụng thiết lập mọi thứ với python 3.5:

 sudo apt install python3.5-tk
 virtualenv --python=`which python3.5` python-env
 source python-env/bin/activate
 pip install -r requirements.txt

Và bây giờ matplotlibcó thể tìm thấy tkinter.

CHỈNH SỬA :

Tôi chỉ cần 3.6 sau đó, và mẹo là:

sudo apt install tk-dev

và sau đó xây dựng lại python3.6, sau tk-dev , ví dụ:

./configure
make
make install

3
Cập nhật: Bây giờ có một python3.6-tk! sudo apt install python3.6-tkhoạt động ở đây :)
Luis

4

Nếu bạn đang sử dụng python 3.6, điều này có hiệu quả với tôi:

sudo apt-get install python3.6-tk

thay vì

sudo apt-get install python3-tk

Hoạt động cho các phiên bản khác của python3


4
Tôi không có gói python3.6-tk trên Ubuntu 16.04.
Brooks

@brooks, tương tự ở đây
Url miễn phí

Cũng không tồn tại trên Centos
Rob Hall

Nó sẽ có sẵn trên Ubuntu 16.04
Yu-Lin Chen

3

Đối với những người nghèo như tôi sử dụng python 3.7 . Bạn cần python3.7-tkgói.

sudo apt install python3.7-tk

$ python
Python 3.7.4 (default, Sep  2 2019, 20:44:09)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'tkinter'
>>> exit()

Ghi chú. python3-tkđược cài đặt. Nhưng không phải python3.7-tk.

$ sudo apt install python3.7-tk
Reading package lists... Done
Building dependency tree
Reading state information... Done
Suggested packages:
  tix python3.7-tk-dbg
The following NEW packages will be installed:
  python3.7-tk
0 upgraded, 1 newly installed, 0 to remove and 34 not upgraded.
Need to get 143 kB of archives.
After this operation, 534 kB of additional disk space will be used.
Get:1 http://ppa.launchpad.net/deadsnakes/ppa/ubuntu xenial/main amd64 python3.7-tk amd64 3.7.4-1+xenial2 [143
kB]
Fetched 143 kB in 0s (364 kB/s)
Selecting previously unselected package python3.7-tk:amd64.
(Reading database ... 256375 files and directories currently installed.)
Preparing to unpack .../python3.7-tk_3.7.4-1+xenial2_amd64.deb ...
Unpacking python3.7-tk:amd64 (3.7.4-1+xenial2) ...
Setting up python3.7-tk:amd64 (3.7.4-1+xenial2) ...

Sau khi cài đặt nó, tất cả đều tốt.

$ python3
Python 3.7.4 (default, Sep  2 2019, 20:44:09)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> exit()

2

Trên CentOS 6.5 với python 2.7 tôi cần phải làm: yum install python27-tkinter


1
Tôi nhận được "Không có gói python27-tkinter có sẵn."
proutray

2

Đôi khi (ví dụ trong phân phối osgeo4w) tkinter bị xóa.

Hãy thử thay đổi tệp matplotlibrc chỉnh sửa phụ trợ matplotlib trong [python install dir]/matplotlib/mpl-data/matplotlibrcviệc thay đổi Tham số phụ trợ từ backend: TkAggsang một thứ khác như backend: Qt4Aggđược mô tả ở đây: http://matplotlib.org/faq/usage_faq.html#what-is-a-backend


1

Vì tôi đang sử dụng Python 3.7 trên Ubuntu nên tôi phải sử dụng:

sudo apt-get install python3.7-tk

0

Có thể bạn đã cài đặt python từ nguồn. Trong trường hợp này, bạn có thể biên dịch lại python với tcl / tk được hỗ trợ.

  1. Tuân thủ và cài đặt tcl / tk từ http://www.tcl.tk/software/tcltk/doad.html , tôi sẽ cho rằng bạn đã cài đặt python tại /home/xxx/local/tcl-tk/.
# install tcl
wget -c https://prdownloads.sourceforge.net/tcl/tcl8.6.9-src.tar.gz
tar -xvzf tcl8.6.9-src.tar.gz
cd tcl8.6.9
./configure --prefix=/home/xxx/local/tcl-tk/
make
make install

# install tk
wget -c https://prdownloads.sourceforge.net/tcl/tk8.6.9.1-src.tar.gz
tar -xvzf tk8.6.9.1-src.tar.gz
cd tk8.6.9.1
./configure --prefix=/home/xxx/local/tcl-tk/
make
make install
  1. Biên dịch lại python với tcl / tk được hỗ trợ, ví dụ:
# download the source code of python and decompress it first.

cd <your-python-src-dir>
./configure --prefix=/home/xxx/local/python \
 --with-tcltk-includes=/home/xxx/local/tcl-tk/include \
 --with-tcltk-libs=/home/xxx/local/tcl-tk/lib
make 
make install
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.