【问题标题】:Starting Python script without explicitly having X11 open在没有明确打开 X11 的情况下启动 Python 脚本
【发布时间】:2009-12-14 18:44:31
【问题描述】:

我的系统上有 Python v2.3。当我想运行 Tkinter 脚本时,我可以使用

python myscript.py

我最近升级到 Python 2.5,现在我需要运行 X11 并设置“DISPLAY”环境变量,然后才能运行我的任何脚本。这对我很不利,因为如果没有明确说明“如果您正在运行 Python > v2.3,则需要在运行此脚本之前打开 X11”,我无法分发任何脚本。有没有解决的办法?我在 OS X Tiger 上。

【问题讨论】:

  • 查看这个 StackOverflow 问题:stackoverflow.com/questions/446052/…
  • @John:我不希望脚本因为用户拥有更新版本的 Python 而失败……这似乎是在惩罚他们做得很好。
  • 我想你会更幸运地在 StackOverflow 上问这个问题。

标签: python macos x11 tkinter


【解决方案1】:

从 python.org 为 OS X 安装 python2.5python2.6。他们使用原生 Aqua Tk,因此对于 IDLE 或使用 Tkinter 的 python 脚本不需要 X11。

【讨论】:

  • 这实际上正是我的问题...python2.5 不起作用。 Python 2.3 可以。
  • 如果您安装了 python.org python,默认情况下它位于 /usr/local/bin/python (实际上符号链接到 /Library/Frameworks/Python.framework/Versions/2.n/bin ) 而不是 /usr/bin/python,因此请确保您的 shell $PATH 反映了这一点。脚本使用哪些 Python 模块?据我所知,那些使用 X11 的安装程序提供的 Python 标准库中没有任何内容。
  • 顺便说一句,如果你从 Fink 或 MacPorts 安装了 python2.5,它们可能是用使用 X11 的 Tk 构建的。请改用 python.org 版本或确保使用其 Aqua Tk 变体。
  • 可能是这样,因为我确实使用过 MacPorts。
  • 当然是这样,这就是我特别提到使用 python.org pythons 的原因。您也许可以使用 $ sudo port tk +quartz 让 MacPorts Tk 和 python2.5 都在 10.4 上运行;您可能需要重新安装 python 才能重建 tkinter。在这种情况下,您可能会更好,使用 python.org 并可能从 ActiveState 安装更新的 Tcl/Tk 8.4。
【解决方案2】:

如果我不得不猜测(而且我确实......),听起来你安装了基于 X11 的 python 和 tkinter 版本,而不是在 OSX 上使用本机窗口系统的版本。我认为您可以安全地编写脚本,而无需告诉人们必须运行 X11。你只需要说他们必须有一个适当的环境设置——要么是原生版本的 python+Tkinter,要么是运行 X11 并拥有基于 X11 的 python+Tkinter 版本

换句话说,这不是你必须编写代码的 python 回归,它只是你特定 python 安装的副作用。

【讨论】:

  • 但是没有理由忍受这个。只需按照我的说明安装正确版本的 python。现在必须使用 X11 Tk 与以前的原生 Tk 运行,这对用户非常不友好,完全没有必要。
  • 哦,同意!没有理由忍受它。我的意思是向 Goose Bumper 保证,这不是 Python 的回归,只是他选择安装的工件。
【解决方案3】:

我已经安装了 Python 2.6.4,并且在没有 $DISPLAY 变量的情况下运行它完全没有任何问题...

我在linux上...

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多