我可以从图形界面运行 ubuntu 12.04 中的 python 脚本吗

我可以从图形界面运行 ubuntu 12.04 中的 python 脚本吗

我正在尝试弄清楚如何通过 ubuntu windows 系统选择和运行 python 文件。我这辈子从来没有运行过脚本,而且我对此很陌生。所以我去了 youtube,因为我觉得这应该不难,但是...

使用此处描述的脚本(和说明): 通过 Ubuntu 终端创建、保存和运行 Python 程序

print"hello world"
vary = raw_input("Enter your Name")
print ("hey" + vary)

我尝试通过双击来打开文件(一次又一次)...但失败了,它不会要求我输入,只是打开终端然后消失(关闭 shell),就是这样...但 IDLE 能够完美运行它,所以我知道它不是脚本。当我使用 VIM 将其创建为文件并从那里运行它时,我得到了以下输出:

Traceback (most recent call last):
  File "shiite/livescript/rev.py", line 2, in <module>
    vary = input("Enter your Name Bitch:  ")
  File "<string>", line 1, in <module>
NameError: name 'Dave' is not defined

还有一件事,我也尝试过用鼠标右键单击来选择文件的属性,然后选中让它执行的框...仍然没有任何反应...

有人知道为什么 Ubuntu 终端无法运行 python 程序吗???也许有一个终端可以运行类似这样的程序???

答案1

在 Windows 中,文件类型由 后面的最后 3 个字符标识。然而,在 Linux(和 Ubuntu)中,.py 只是帮助我们人类弄清楚它是什么类型的文件。你必须告诉 Ubuntu 你编写的脚本是一个 Python 脚本,它应该用 Python 解释器运行。你可以通过两种方式做到这一点:

第一的您可以调用python,后跟脚本名称。即打开终端并输入:

python hellowworld.py

这会起作用。

第二,但是,您想使用 GUI 并通过双击来运行它。为此,您需要在脚本中添加一行,告诉 Ubuntu 接下来的几行将被解释为 python 脚本。第一行称为沙邦行。对于 Python 来说,它看起来像:

#! /usr/bin/python

注意#!开头的 。脚本的前两个字符必须是这两个字符,后面跟着该行的其余部分。因此,您的脚本将如下所示:

#! /usr/bin/python

print"hello world"
vary = raw_input("Enter your Name")
print ("hey " + vary)

正如您所指出的,脚本必须标记为可执行文件。为此,请右键单击脚本图标并转到属性>权限并检查允许作为程序执行文件

现在,当您双击脚本时,它将显示一个带有以下选项的窗口:

Run in terminal,,,,DisplayCancelRun

你可以尝试一下Run in terminal。它会打开一个终端并显示提示:

Enter your name

当您输入姓名时,终端将在脚本完成后关闭。因此,您永远不会看到“嘿 [您的名字]”,因为它发生得太快,您的眼睛无法捕捉到。您必须修改脚本,使其暂停并等待您在看到显示后将其关闭。

希望这可以帮助

答案2

为了重现您的问题,我首先验证我的系统上是否安装了 Python。

xaap001@ubuntu:~$ which python
/usr/bin/python
xaap001@ubuntu:~$ python
Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

然后,我将您上面发布的 Python“hello world”代码保存到名为的文件中helloWorld.py。保存后,我没有更改此文件的权限。从终端,我尝试了以下操作:

xaap001@ubuntu:~$ python helloWorld.py
hello world
Enter your NameAaron
heyAaron

看起来成功了。在终端中,你只需要在所有 Python 脚本前面加上python

编辑:我决定尝试通过创建桌面快捷方式从桌面运行它,如下问题/答案中所述:桌面快捷方式创建新的桌面快捷方式没有任何作用

我将“命令”设置为:python /home/xaap001/helloWorld.py

这给了我一个可以点击的桌面图标。但它什么也没做。我检查了 .desktop 文件(快捷方式)的实际内容:

[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon[en_US]=python
Name[en_US]=Python helloWorld
Exec=python /home/xaap001/helloWorld.py
Name=helloWorldPy
Icon=python

我注意到了该Terminal=false设置,并将其更改为Terminal=true。然后双击图标就可以了。

答案3

你能相信吗?我不得不承认,我觉得我的 ubuntu 感染了病毒或类似的东西。但是是的,我确实这样做了,并且这样做了:

lucky1@babyCatsDesktop:~/shiite/livescript$ python rev.py

你好世界

请输入您的姓名:Dave

回溯(最近一次调用最后一次):

文件“rev.py”,第 2 行,在

vary = input("Enter your Name Please:  ")

文件“”,第 1 行,位于

NameError:名称“Dave”未定义

lucky1@babyCatsDesktop:~/shiite/livescript$

但是它在 Python 终端上完美地运行?我不擅长这些东西,我似乎发现了最独特但最常见的问题。

答案4

在 Python 2(您可能正在使用)中,input()raw_input()并不相同。您的脚本使用input(),与示例不同。

input()接受您的输入并尝试对其进行评估。由于您的命名空间中没有名为“Dave”的对象,因此 Python 不知道该怎么做。raw_input()但是,这会将您的输入转换为字符串,这应该在几乎所有情况下使用。

笔记:在Python 3中,raw_input()已重命名为input()

您认为什么都没有发生,因为会抛出错误并且脚本会终止。这也是为什么您应该始终从终端运行脚本的原因,这样您就可以看到打印的错误消息或常规调试信息。

因此,更改您的脚本以供使用raw_input()并从终端运行它,直到解决所有错误,然后尝试双击它。

相关内容