我試圖弄清楚如何透過 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()
並從終端運行它,直到解決所有錯誤,然後嘗試雙擊它。