我创建了一个使用virtualenv进行依赖的python脚本ExeMain.py。因此,要使用.desktop启动此脚本,我需要执行以下命令
Exec=sh -c 'source ~/PycharmProjects/ProBlog/venv/bin/activate; python ~/PycharmProjects/ProBlog/ExeMain.py;'
导致此错误的原因是“ sh:1:源:找不到”,后跟“ ImportError”
如果.desktop文件中没有源命令,并且在直接python环境中安装了所有必需的模块,它就可以正常工作(在其他Linux机器上)。由于它似乎不是一个好习惯,所以我尝试使用venv。从导入错误开始,我可以看到的错误是因为未执行源命令。
当我启动.desktop文件时,它应该执行ExeMain.py文件。
答案 0 :(得分:1)
sh
的标准版本没有source
命令。也许使用/ bin / bash代替?因此,应该按照以下方式写一些东西:
Exec=/bin/bash -c 'source /home/username/PycharmProjects/ProBlog/venv/bin/activate && /home/username/PycharmProjects/ProBlog/venv/bin/python /home/username/PycharmProjects/ProBlog/ExeMain.py'
我还建议其他三个更改:1)&&
运算符,以便在activate
完成之前它不会尝试运行python代码,2)替换~
波浪号使用完整路径,以防桌面环境无法正确扩展它,以及3)将完整路径放置到venv python,这样它就不会默认为系统python。其中一些可能不是必需的(取决于系统设置),但是小心一点也没有什么害处。