【问题标题】:How do I get tkinter to work (in vim) and how do I get python-3.x running as my default python for linux?如何让 tkinter 工作(在 vim 中)以及如何让 python-3.x 作为 linux 的默认 python 运行?
【发布时间】:2023-03-22 23:56:01
【问题描述】:

据我了解,tkinter 预装了 python。我终其一生都无法理解为什么我尝试在其上运行 tkinter 的每个 IDE 都没有将 tkinter 识别为库。

我尝试过: import tkinter as tk import Tkinter as tk import * from tkinter from tkinter import * import tkinter import Tkinter 以及介于两者之间的其他一切......

我试图运行的整个代码片段:

 import Tkinter
 top = Tkinter.Tk()
 top.mainloop()

每当我尝试在 VIM 中运行它时,错误消息是:

Traceback (most recent call last):
  File "tktest.py", line 1, in <module>
    import Tkinter
  File "usr/lib/python2.7/lib-tk/Tkinter.py", line 42, in <module>
    raise ImportError, str(msg) + ', please install the python-tk package'
ImportError: No module named_tkinter, please install the python-tk package

shell returned 1

我是否需要 vim 在 vi​​m 中运行 python3(我认为这是默认设置)如果需要,我该怎么做?

我什至尝试过像它说的那样安装 tkinter,但我收到了这个大错误消息:

ken@ken-HP-ENVY-Laptop-13-ah1xxx:~$ pip install Tkinter
Collecting Tkinter
Exception:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/usr/lib/python2.7/dist-packages/pip/commands/install.py", line 353, in run
    wb.build(autobuilding=True)
  File "/usr/lib/python2.7/dist-packages/pip/wheel.py", line 749, in build
    self.requirement_set.prepare_files(self.finder)
  File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/usr/lib/python2.7/dist-packages/pip/req/req_set.py", line 554, in _prepare_file
    require_hashes
  File "/usr/lib/python2.7/dist-packages/pip/req/req_install.py", line 278, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 465, in find_requirement
    all_candidates = self.find_all_candidates(req.name)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 423, in find_all_candidates
    for page in self._get_pages(url_locations, project_name):
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 568, in _get_pages
    page = self._get_page(location)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 683, in _get_page
    return HTMLPage.get_page(link, session=self.session)
  File "/usr/lib/python2.7/dist-packages/pip/index.py", line 795, in get_page
    resp.raise_for_status()
  File "/usr/share/python-wheels/requests-2.18.4-py2.py3-none-any.whl/requests/models.py", line 935, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
HTTPError: 404 Client Error: Not Found for url: https://pypi.org/simple/tkinter/

看起来我默认在我的系统上运行 python2.7,我不知道为什么...如何让 python3.7(或最新版本)成为我机器的默认值?

郑重声明,我使用的是 Linux Mint 19.3 Tricia

【问题讨论】:

  • 使用命令pythonpython2python2.7 运行Python 2 是标准的,使用python3python3.7python3.8 等运行Python 3 是标准的。 pippip2pip3pip3.7 等。如果你想用某个版本的 Python 运行脚本,那么你可以在第一行使用 shebang #!/usr/bin/env python3 并将其设置为可执行 chmod a+x script.py 和然后它将像任何程序一样运行,自动使用python3
  • 错误表明您的 Python2 没有 Tkinter - 您可能必须使用 apt install python-tk 安装它。
  • 顺便说一句:您是安装新的 Mint 19.3 还是从旧版本更新?我有 Mint 19.3 从 19.2 更新,从 19.1 更新,从 18.0 更新,从 17.0 更新,我在 Python 2 开始时有 Tkinter
  • 我一定会尝试的!但是,是的,我安装的是全新的,而不是更新的。这很奇怪,因为很多程序似乎都不适合我,比如 pycharm 和 intellij-idea。 Pycharm 工作了几分钟(试图让 tkinter 运行时出现同样的错误),然后它做了这个奇怪的双窗口事情,并且不允许我在侧边栏中选择其他文件。它只让我编辑我的代码。
  • @furas 虽然您对命令名称的看法是正确的,但预计这会随着 python2 的弃用而改变

标签: python python-3.x tkinter vim linux-mint


【解决方案1】:

尝试在virtual environment 中运行 Python 3:

打开一个终端,进入你的项目目录并运行 $ python3 -m venv venv 这将在您的项目目录中创建一个名为 venv 的虚拟环境。

要激活它,进入你的项目目录并运行$ source venv/bin/activate

您的 bash 提示符现在应该显示为 (venv) $,您所做的任何工作都将在虚拟环境中进行。

一旦你在 venv 内完成工作,你想停用它。要停用,请输入$ deactivate

现在,一旦您的虚拟环境处于活动状态,您就可以干净、无包地安装 Python 3.x,其中 x 是您安装的任何版本,别名为 python3

从这里,您可以升级 pip:$ pip install -U pip,从 requirements.txt 文件:$ pip install -r requirements.txt 重新安装您想要的所有软件包,并像往常一样使用 pip 安装您需要的任何其他单个软件包。

您在虚拟环境中安装的任何内容作用于您的虚拟环境,因此您可以将其用作测试平台,并根据需要销毁/重建.这有很多好处。


完成此操作后,尝试从虚拟环境中启动 vim,然后尝试从虚拟环境中运行代码。一旦进入您的 venv,您的终端所知道的唯一 Python 就是 venv 中的那个。所以它应该默认为那个。

【讨论】:

  • 感谢您的信息!不幸的是,在做了这些事情之后,我仍然收到错误消息no module named 'Tkinter' 我尝试了大写和非大写...我认为这很奇怪,因为 tkinter 应该包含在 python 中。
猜你喜欢
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多