web-dev-qa-db-ja.com

Tkinter:「PythonはTk用に設定されていない可能性があります」

今日、私はTkinterを使い始めたかったのですが、いくつか問題があります。

Python 3.2 (r32:88445, Mar 28 2011, 04:14:07) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.2/tkinter/__init__.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter

Tkinterで動作するようにPython 3.2を設定するにはどうすればよいですか?

64
Maciej Ziarko

http://wiki.python.org/moin/TkInter によると:

「_tkinterという名前のモジュールがありません」で失敗した場合、Python設定を変更してこのモジュール(Cで実装された拡張モジュール))を変更する必要があります。DonotModules/Setupの編集(古くなっています)TclとTkのインストール(RPMを使用する場合は、-devel RPMもインストール)および/またはsetup.pyスクリプトの編集が必要になる場合があります。 Tcl/Tkがインストールされている適切な場所を指すようにするTcl/Tkをデフォルトの場所にインストールする場合、「make」を再実行するだけで_tkinter拡張機能をビルドできます。

27
Sandro Munda

Arch/Manjaroの下にパッケージtkをインストールするだけです:

Sudo pacman -S tk
67
Jabba

インストールtk-devel(または同様の名前のパッケージ)をPythonをビルドする前に。

これをUbuntu 16.04上のpyenvで動作させるには、次のことをしなければなりませんでした。

$ Sudo apt-get install python-tk python3-tk tk-dev

次に、Pythonのバージョンをインストールしました:

$ pyenv install 3.6.2

それから私はtkinterをうまくインポートできました:

import tkinter
13
PaulMest

Python 2.7でFedoraに同じ問題がありました。いくつかの追加パッケージが必要であることが判明しました。

Sudo dnf install tk-devel tkinter

パッケージをインストールした後、この hello-world の例はPython 2.7:

$ cat hello.py
from Tkinter import *
root = Tk()
w = Label(root, text="Hello, world!")
w.pack()
root.mainloop()
$ python --version
Python 2.7.8
$ python hello.py

X11転送により、次のようになります。

Hello World through X11

Python 3では、モジュール名は小文字であり、他のパッケージがおそらく必要であることに注意してください...

from tkinter import *
3
Stefan Saru

python 2.7.9。
それを修正するために、tkとtclをインストールしてからpythonコードを再構築し、再インストールします。構成中に、tkとtclのパスを明示的に設定します。

./configure --with-tcltk-includes="-I/usr/include" --with-tcltk-libs="-L/usr/lib64 -ltcl8.5 -L/usr/lib64 -ltk8.5"

また、pythonインストールプロセスの記事全体: Building Python from Source

2
dasons

ああ、Ignacio Vazquez-Abramsがpython-buildの前にtk-devをインストールすることを提案する解決策をたどっただけです。 (Ubuntu 16.04のソースからPython-3.6.1をビルドします。)

昨日ビルドしたコンパイル済みのオブジェクトとバイナリがありましたが、オブジェクトをクリーンアップせず、同じビルドパスで再度ビルドしました。そして、それは美しく働きます。

Sudo apt install tk-dev
(On the python build path)
(No need to conduct 'make clean')
./configure
make
Sudo make install

それでおしまい!

1
David Jung

WindowsおよびLinux用Windowsサブシステムを使用している場合は、コマンドラインからpythonコマンドを実行するときに、誤ってpythonインストールを実行していないことを確認してください。 WSL!これはちょうど今頭痛の種になりました。
which <python command you're using>
それが/usr/bin/python2 powershellを使用している場合でも、おそらくそれが起こっています。

1
bbukaty
Sudo apt-get install python3-tk
1
Rafal

この症状は、python(2.7.13など)の新しいバージョンがリリースのpythonバージョン、その後のオペレーティングシステムのアップグレード(たとえば、Ubuntu 12.04-> Ubuntu 14.04)では、更新されたpythonを削除できません。

その非互換性を修正するには、

a)/ usr/local/binにあるpythonの更新されたバージョンを削除します。

b)python-idle2.7をアンインストールします。そして

c)python-idle2.7を再インストールします。

0
s.w.s.

Amazon Linux OSを実行しているAWSインスタンスで実行している場合、これを修正する魔法のコマンドは

Sudo yum install tkinter

Linuxビルドを決定する場合は、cat /etc/*release

0
StackG

これに対する最も完全な答えは、ここにある受け入れられた答えだと思います:

buntuのデフォルトでtkinterを機能させる方法Python 2.7インストール?

私はこの問題に時間を費やしすぎたため、他の誰かの手間を省けることを願っています。

私が持っていた正確な問題について言及したこの古いバグレポートは無効とみなされ、Tkinter.pyがありましたが、モジュール_tkinterが見つかりませんでした: http://bugs.python.org/issue8555 =

Apt-getを使用してtk-devパッケージをインストールし、Python2.7.3ディレクトリで./configure、make、make installを使用してPythonを再構築しました。これで、Python2.7でTkinterをインポートできます、 わーい!

Pythonインストールドキュメント....でtk-devパッケージがまったく言及されていないことに少し困惑しています。..Python私のように、誰かが_tkinter以外のものが欠けていることに気付いた場合。

0
mjp