我正在尝试弄清楚如何通过 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
,,,,Display
Cancel
Run
你可以尝试一下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()
并从终端运行它,直到解决所有错误,然后尝试双击它。