今日、私は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を設定するにはどうすればよいですか?
http://wiki.python.org/moin/TkInter によると:
「_tkinterという名前のモジュールがありません」で失敗した場合、Python設定を変更してこのモジュール(Cで実装された拡張モジュール))を変更する必要があります。DonotModules/Setupの編集(古くなっています)TclとTkのインストール(RPMを使用する場合は、-devel RPMもインストール)および/またはsetup.pyスクリプトの編集が必要になる場合があります。 Tcl/Tkがインストールされている適切な場所を指すようにするTcl/Tkをデフォルトの場所にインストールする場合、「make」を再実行するだけで_tkinter拡張機能をビルドできます。
Arch/Manjaroの下にパッケージtk
をインストールするだけです:
Sudo pacman -S tk
インストール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
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転送により、次のようになります。
Python 3では、モジュール名は小文字であり、他のパッケージがおそらく必要であることに注意してください...
from tkinter import *
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
ああ、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
それでおしまい!
WindowsおよびLinux用Windowsサブシステムを使用している場合は、コマンドラインからpythonコマンドを実行するときに、誤ってpythonインストールを実行していないことを確認してください。 WSL!これはちょうど今頭痛の種になりました。which <python command you're using>
それが/usr/bin/python2
powershellを使用している場合でも、おそらくそれが起こっています。
Sudo apt-get install python3-tk
この症状は、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を再インストールします。
Amazon Linux OSを実行しているAWSインスタンスで実行している場合、これを修正する魔法のコマンドは
Sudo yum install tkinter
Linuxビルドを決定する場合は、cat /etc/*release
これに対する最も完全な答えは、ここにある受け入れられた答えだと思います:
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以外のものが欠けていることに気付いた場合。