我有一个 python 脚本文件,当我从终端使用它时,它可以完美地工作。
现在我创建了以下 .desktop
文件以便轻松启动它:
[Desktop Entry]
Name=Test
GenericName=Test
Comment=My test script
Type=Application
Exec=/opt/test.py
Icon=/opt/test.png
Categories=Utils;
当我启动它时,会出现 GTK 窗口,但单击调用 init.d 脚本的按钮会使其无法正常工作。
因此添加 Terminal=true
使其可以完美工作,但我不想打开该终端。
所以我添加了以下代码来记录环境变量:
import os
with open("/tmp/py_env.log", "w") as env_log:
env_log.write(str(os.environ))
并发现差异。
所以我的问题是如何编写 .desktop 文件,以便我的应用程序运行就像我从终端启动它一样(没有打开的终端:))
最佳答案
问题是有效的,但我认为“复制终端环境”是解决它的错误方法。
事实上,应用程序工作的原因并不是它从终端启动,而是终端碰巧有一些对您的应用程序很重要的环境变量.
因此,您的目标应该是始终正确设置这些环境变量,而不是假设终端环境总是碰巧包含它们所有用户的时间。
因此,您应该:
- 检查两个环境中哪些环境变量不同
- 列出重要的内容(即那些使
.desktop
文件正常工作的内容),以及脚本正常工作所需的值 - 要么:
- 为您的 Python 脚本创建一个包装脚本,以正确初始化这些环境变量,或者
- 从 Python 脚本本身内部设置这些环境变量。
关于python - Linux 桌面文件 Exec 不使用用户 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17390592/