通过 pyenv 安装的 Python 版本无法导入tkinter:
? python
Python 3.8.1 (default, Feb 29 2020, 11:45:59)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/factor/.pyenv/versions/3.8.1/lib/python3.8/tkinter/__init__.py", line 36, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ModuleNotFoundError: No module named '_tkinter'
>>>
Run Code Online (Sandbox Code Playgroud)
或者您可能会收到有关标头版本与二进制文件不匹配的消息:
DEPRECATION WARNING: The system version of Tk is deprecated …Run Code Online (Sandbox Code Playgroud) 我正在使用macOS 10.12.1 Sierra.我使用的是Python 2.7.12
brew install python
Run Code Online (Sandbox Code Playgroud)
但是IDLE给出了警告
WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
Run Code Online (Sandbox Code Playgroud)
果然,它经常崩溃.8.5.9是macOS预安装版本.
我可以从ActiveState网站下载稳定的8.5.18 (由python推荐,它与python.org的python安装一起工作(因为他们在使用不稳定的macOS默认8.5.9之前寻找任何其他版本的Tcl/Tk) ).
但是这个下载不会影响brew安装的python IDLE,它继续使用8.5.9.
有什么我可以做的事情来链接更新的Tcl/Tk和Homebrew,或者我可以直接用自制软件安装Tcl/Tk吗?
我也注意到使用anaconda python时会出现完全相同的问题,它使用预安装的mac tcl/tk 8.5.9,而不是用户安装的tcl/tk 8.5.18.
我在Mac上通过自制软件安装了我的Python.
brew install python
Run Code Online (Sandbox Code Playgroud)
之后我将我的python版本检查为2.7.11,然后我尝试了执行
import Tkinter
Run Code Online (Sandbox Code Playgroud)
我有以下错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk/Tkinter.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter
Run Code Online (Sandbox Code Playgroud) 我ActiveTcl8.6.1.1.297588-macosx10.5-i386-x86_64-threaded在OS X 10.9.1上安装了.但是,当我idle3从终端运行启动IDLE时,IDLE窗口中会显示以下警告:
Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 16 2013, 23:39:35)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> WARNING: The version of Tcl/Tk (8.5.9) in use may be unstable.
Visit http://www.python.org/download/mac/tcltk/ for current information.
Run Code Online (Sandbox Code Playgroud)
为什么我安装的较新的ActiveTcl版本无法被IDLE识别?我怎么能纠正这个?
编辑:更多细节.
$ echo $PATH
/Library/Frameworks/Python.framework/Versions/3.3/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
$ which tclsh
/usr/bin/tclsh
$ ls -l /usr/bin/tclsh*
lrwxr-xr-x 1 root wheel 17 Jan 15 10:45 /usr/bin/tclsh -> /usr/bin/tclsh8.6
lrwxr-xr-x 1 root wheel 67 Oct …Run Code Online (Sandbox Code Playgroud) 我现在正在学习 Tkinter 并试图解决我的第一个问题,但找到 Google 并没有帮助。
我在 Mac OS X 10.15.1 (Catalina) 上运行此代码
我使用的是 Python 3.7,我的代码看起来像这样(每个 PEP8 标准有很多样板):
"""
Experiments in tkinter
"""
import tkinter as tk
def main():
"""
Main entrypoint
"""
tk._test()
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
这会向控制台输出以下警告:
弃用警告:不推荐使用 Tk 的系统版本,可能会在未来版本中删除。请不要依赖它。设置 TK_SILENCE_DEPRECATION=1 以取消此警告。
它还显示一个带有完全空白按钮的窗口:
根据我的理解,这些按钮应该是“点击我”和“退出”。
此外,当我单击顶部按钮时,它会闪烁黑色一秒钟,如下所示:
之后按钮比以前更宽:
我认为 Tk 版本错误可能与输出行为有关。但是我似乎找不到更新 Tk 的方法。我应该在这里做什么?
在看到@ShayneLoyd 的回答后(建议我需要更新版本的 Python 和更新版本的 Tk),我开始四处寻找更多内容,并在 Apple 讨论板上找到了这篇文章,其中建议您可以使用自制软件安装一个链接的 Python 版本homebrew 自己安装的 Tk 版本。我试过这个,但失败了,所以我用谷歌搜索了这个问题,发现这个 StackOverflow 帖子似乎暗示我可以安装 ActiveTcl并且它会工作。
我从 ActiveState 安装了 ActiveTcl …