我已经编写了hello.py(一个基本的“ hello world”程序),并希望能够通过按Win键打开Dash,然后在脚本中输入脚本名称(或类似的东西。
但是,当我在Dash中键入hello.py时,它将在编辑器中打开文件而不是执行文件。我添加了一个shebang行#!/usr/bin/env python3
并运行chmod u+x hello.py
,它仍然在编辑器中打开文件。
我尝试创建一个将运行Python脚本的 hello.sh 外壳脚本,但是当我在Dash中键入其名称时,该外壳脚本也会在编辑器中打开。
是否可以通过在Dash中键入其名称来运行Python脚本?还是有另一种简单的方法来运行任意Python脚本?本质上,我想要的是类似Windows的运行对话框,当您按下Win-R时会出现该对话框,该对话框可以在系统PATH上运行任何程序。
答案 0 :(得分:6)
(在18.04测试)
在~/.local/share/applications
(仅供用户使用)或/usr/share/applications
(供所有用户使用)中创建此文件。
文件名必须以.desktop结尾。
[Desktop Entry]
Name=hello.py
Exec=/path/to/hello.py
Type=Application
Categories=GTK;GNOME;Utility;
请注意,该脚本在后台运行,并且除非将日志记录配置到脚本中的文件,否则错误将被吞没。
如果您希望它在控制台中运行,则可以执行此操作(不过,脚本退出时控制台将关闭):
[Desktop Entry]
Name=hello.py
Exec=gnome-terminal -- /path/to/hello.py
Type=Application
Categories=GTK;GNOME;Utility;
如果您需要图标,限制图标运行的桌面环境等,则可以使用更多功能-此处的文档:https://developer.gnome.org/integration-guide/stable/desktop-files.html.en
假设:
答案 1 :(得分:3)
首先,我要指出我不是 Lnx UI 专家(这不是我的主要环境,并且我大多没有 X < / em>)。但是我想从我的评论中可以明显看出。所以我不得不 Google 。一些资源:
该解决方案类似于@Bengerman的解决方案(这很正常,因为 .desktop 文件是自定义 Dash 的最常用方法)。
人们可以看着它,就像是:
我也在2之间摇摆,但是考虑到 Dash 可能不是这样设计的,我有点倾向于后者。
我有一个 VirtualBox VM ,具有以下规格:
cfati@cfati-ubtu16x64-0:~/bin$ ~/sopr.sh *** Set shorter prompt to better fit when pasted in StackOverflow (or other) pages *** [064bit prompt]> uname -a Linux cfati-ubtu16x64-0 4.15.0-58-generic #64~16.04.1-Ubuntu SMP Wed Aug 7 14:10:35 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux [064bit prompt]> [064bit prompt]> cat /etc/lsb-release | grep LTS DISTRIB_DESCRIPTION="Ubuntu 16.04.6 LTS" [064bit prompt]> [064bit prompt]> cat /etc/X11/default-display-manager /usr/sbin/lightdm [064bit prompt]> [064bit prompt]> echo ${PATH} /home/cfati/bin:/home/cfati/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/cfati/Install/Google/Android_SDK/tools:/home/cfati/Install/Google/Android_SDK/platform-tools:/home/cfati/Install/Google/Android_SDK/ndk-bundle:/home/cfati/Install/Google/Android_SDK/tools:/home/cfati/Install/Google/Android_SDK/platform-tools:/home/cfati/Install/Google/Android_SDK/ndk-bundle [064bit prompt]> [064bit prompt]> ls -l ~/.local/share/applications/py.desktop -rw-r--r-- 1 cfati cfati 400 aug 30 20:22 /home/cfati/.local/share/applications/py.desktop [064bit prompt]> [064bit prompt]> ls -l total 4 -rwxrwxr-x 1 cfati cfati 142 aug 30 21:49 hwx.py
因此,它是具有 Unity 的 Ubtu 16 x64 。
py.desktop :
[Desktop Entry]
Name=Generic Python file
Comment=Run a Python file when typing its name in Dash ...
Exec=bash -c "bash --rcfile <(echo \"/usr/bin/env python3 %F\")"
#Icon will differ on other machines.
Icon=/usr/share/pixmaps/python3.5.xpm
Terminal=true
Type=Application
#I am not fully aware of the following entries implications
Categories=ConsoleOnly;Utility;System;Development;
Keywords=console;python;
将以上文件复制到 $ {HOME} /。local / share / applications 中(仅对当前用户启用)。
注释:
在我的 UI 上,我必须:
测试文件位于〜/ bin (位于 $ {PATH} 中)中。
hwx.py :
#!/usr/bin/env python3
import sys
import os
print("Hello World from: [{0:s}]".format(os.path.abspath(__file__)))
input("Press <ENTER>: ")
打开 Dash 并输入文件名
注意:不知道这是我的 VM 上的故障还是一般情况,但是有时我还必须在文件名后键入 SPACE ( (在图片中也是可见的),以便显示选项
从下面显示的选项中选择(单击)文件,然后将打开一个控制台:
不用说,在 Python 进程退出后,控制台仍将保留
与该问题无关,但我认为值得一提[SO]: How do I set “default App” for a file extension to an “.exe” on Windows 10 after April 2018 update (@CristiFati's answer)。
答案 2 :(得分:0)
关于最后一段:
是否可以通过在Dash中键入其名称来运行Python脚本?还是有另一种简单的方法来运行任意Python脚本?本质上,我想要的是类似Windows的运行对话框,当您按下Win-R时会出现该对话框,该对话框可以在系统PATH上运行任何程序。
您几乎可以回答自己。在Linux中,您还具有PATH环境变量。您可以在控制台中输入以下内容进行检查:
$ echo $PATH
我在/home/xbello/.bashrc
文件中将路径编辑为如下内容:
export PATH=$HOME/bin:$PATH
现在,我将程序和脚本放在/ home / xbello / bin中,将其chmod更改为+ x,并且它们始终可以从终端或Alt + F2上获得。如果添加shebang #!/bin/env python
,则不需要扩展名。问题是从Alt + F2执行的print("Hello world")
的输出将丢失。您需要这样的代码:
#!/bin/env python3
import os
os.system("notify-send 'Hello world'")
答案 3 :(得分:0)
使用gnome-panel
GUI可能是最简单的方法:
安装gnome-panel
。
$ sudo apt install gnome-panel
启动项目编辑脚本。您需要将.desktop
文件放在~/.local/share/applications
或/usr/share/applications
中。请记住,/usr/share
将可供所有系统用户访问。
$ gnome-desktop-item-edit --create-new ~/.local/share/applications/Tester.desktop
如果您需要编辑应用程序,则有2个选项:
a。再次运行项目编辑脚本以重新打开GUI。
```shell
$ gnome-desktop-item-edit ~/.local/share/applications/Tester.desktop
```
b。直接在vim
之类的文件中打开桌面文件。