我可以在 ubuntu 12.04 中從圖形介面執行 python 腳本嗎

我可以在 ubuntu 12.04 中從圖形介面執行 python 腳本嗎

我試圖弄清楚如何透過 ubuntu windows 系統選擇並運行 python 檔案。我一生中從未運行過腳本,而且我對此很陌生。

使用此處描述的腳本(和說明): 透過 Ubuntu 終端機創建、儲存並運行 Python 程式

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

我嘗試透過雙擊文件(一次又一次)來打開文件......但它失敗了,不會要求我輸入,只是打開終端並消失(關閉外殼),僅此而已......但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 中,文件類型由 .然而,在 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

你好世界

請輸入您的姓名:戴夫

回溯(最近一次呼叫最後一次):

檔案“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()並從終端運行它,直到解決所有錯誤,然後嘗試雙擊它。

相關內容