【问题标题】:Can't run installation script in new window无法在新窗口中运行安装脚本
【发布时间】:2017-08-12 19:37:28
【问题描述】:

我会直截了当。 我正在为 Linux 开发一个带有 GUI 的 GTK 程序,当用户单击特定按钮时,应该运行安装脚本。

如果我通过终端运行我的应用程序,我目前正在开发它,我有一个打开的终端,并且 bash 脚本可以运行。

#this works
python main.py

我的问题是,该应用程序将作为常规应用程序发布,像往常一样通过 .desktop 文件运行,这意味着终端不会打开。

我一直在搜索,找不到运行我的安装脚本的方法,打开一个新终端进行安装。 在正常情况下,您可以从 bash 运行:

uxterm -e -hold 'path to script'

我无法在 python 中完成这项工作:

os.system("uxterm -e -hold 'installer_path')

因为installer_path是一个字符串:

 string=name.lower().lstrip().replace(" ","")+"_installer.sh"
 installer_path=get_app_installer_path(category)+string

所以我的意思是,我怎样才能正确打开一个新终端,并从新终端运行我的安装脚本?

感谢您的宝贵时间。

【问题讨论】:

  • 那么,您的问题是installer_path 被视为字符串而不是变量?
  • 是的,因为在该方法中,安装程序路径被视为字符串,而它应该被视为 bash 命令或 bash 脚本的路径。
  • 我对你的解释很迷茫,所以让我们尽可能清楚地说明这一点。以下陈述是真的吗? 'installer_path 是一个 Python 变量,我想在子 shell 中用作 Bash 变量,但 Bash 将变量视为名为“installer_path”的字符串。是这样吗?
  • installer_path 是一个 python 变量,它是包含安装脚本路径的字符串,例如 /home/user/Documents/installers/installer1。 Bash 将此变量视为 bash 命令,这让我收到错误“找不到安装程序路径命令”

标签: python bash


【解决方案1】:

要将 Python 变量替换为 bash 脚本,您只需将其格式化为:

os.system("uxterm -hold -e {0}".format(installer_path))

这应该适用于您的情况。

【讨论】:

  • 谢谢,终于可以了。感谢您的宝贵时间,问题已解决。
猜你喜欢
  • 2023-03-29
  • 2014-08-26
  • 2016-02-06
  • 2021-12-15
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 2022-01-23
  • 2020-05-23
相关资源
最近更新 更多