Ubuntu Windows システムで Python ファイルを選択して実行する方法を見つけようとしています。 これまでスクリプトを実行したことがなく、この分野にはまったく不慣れです。 難しいことではないはずだと思い、YouTube を見ましたが...
ここで説明するスクリプト (および手順) を使用します。 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
もう 1 つ、右クリックでファイルのプロパティを選択し、実行を許可するボックスをチェックしてみましたが、それでも何も起こりません。
Ubuntu ターミナルで Python プログラムを実行できない理由を知っている人はいますか? このようなものを実行できるターミナルがあるのでしょうか?
答え1
Windows では、ファイルの種類は .py の後の最後の 3 文字で識別されます。ただし、Linux (および Ubuntu) では、.py は、人間がファイルの種類を判断するのに役立つだけです。作成したスクリプトが Python スクリプトであり、Python インタープリターで実行する必要があることを Ubuntu に伝える必要があります。これを行うには、次の 2 つの方法があります。
初めpython
スクリプト名を続けて呼び出すことができます。つまり、ターミナルを開いて次のように入力します。
python hellowworld.py
これはうまくいくでしょう。
2番、しかし、GUIを使用してダブルクリックで実行したいとします。そのためには、次の行がPythonスクリプトとして解釈されることをUbuntuに伝えるスクリプトの行が必要です。この最初の行はシャバン行。Python の場合は次のようになります。
#! /usr/bin/python
先頭の に注意してください#!
。スクリプトの最初の 2 文字は、その 2 文字に続いて行の残りの部分が続く必要があります。したがって、スクリプトは次のようになります。
#! /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
名前を入力すると、スクリプトが完了するとターミナルが閉じます。そのため、「hey [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()
、すべてのバグがなくなるまでターミナルから実行してから、ダブルクリックしてみてください。