Python

【Python 1】プログラムの実行方法

環境

・macOS Big Sur
Python3.8

本ページでは、Python3がインストール済みであることを前提として、一般的な実行方法をまとめています。

これからPythonを導入する場合は、AnacondaというPythonの機能を強化した環境を使用してしまうのが簡単です。

また、Homebrewを使って環境構築する方法もまとめましたので、参考にしてみてください。

【Python】開発環境の構築自分はまだまだエンジニアといえるレベルにありませんが、今後のことも考えて、ある程度統一的なPythonの開発環境を構築しておこうと思いま...

プログラムの実行方法として、主に「インタラクティブシェル上で実行」する方法と「スクリプトファイルを読み込み実行」する方法があります。

インタラクティブシェル上で実行

インタラクティブシェル(対話シェル)上にプログラムを入力すると、即座に結果が返されることから、対話するようにプログラムを実行できる特徴があります。

Pythonのインタラクティブシェルは、ターミナルの「プロンプト」(入力待ちの状態を表し、ターミナルの場合は%で終わる行をいいます。)に続けてコマンド「python3」と入力することで起動できます。

インタラクティブシェルの「プロンプト」(>>>記号)の後にプログラムを入力すると、即座に結果が返されます。

インタラクティブシェルは「Ctrlキー+Dキー」や「quit()」を入力することで終了できます。

以後、%に続けて入力されたコマンドはターミナル上、>>>に続けて入力されたプログラムはインタラクティブシェル上であることを表します。

ターミナルは、DockにあるLaunchpadをクリック後、上部に表示される検索フィールドに「ターミナル」と入力することで見つけられます。

また、「commandキー+spaceキー」で「Spotlight検索」画面が開きますので、そこに「ターミナル」と入力することでも起動できます。

スクリプトファイルから実行

「スクリプトファイル」(エディタにプログラムを書いて保存したテキストファイルをいいます。)を呼び出すことで、プログラムを実行できます。Pythonのスクリプトファイルは、ファイル名に「.py」拡張子をつけて保存します。

macOSでは「テキストエディット」がエディタとして使用できます。テキストエディットは上述のターミナルと同様の方法で見つけられます。

テキストエディット起動後、「フォーマット」メニューの「標準テキストにする」を選択し、フォーマット変更をする必要があります。

ここではスクリプトファイル名を「hello.py」として、以下の2種類の呼び出し方について説明します。

指定方法①
% python3 hello.py

指定方法②(シバンありの場合)
% ./hello.py

 

スクリプトファイルから実行する場合、指定方法①ではファイルパス、指定方法②ではファイルパス、シバン、パーミッションを考慮する必要があります。

ファイルパス

指定方法①、②共に、ファイルが「カレントディレクトリ」(作業中のディレクトリで、%の前に表示されます。ディレクトリとはフォルダのことをいいます。)にない場合は、「ファイルパス」(ファイルの場所)を指定するか、カレントディレクトリを移動する必要があります。

スクリプトファイルが以下の場所にあり、カレントディレクトリが「Documents」の場合を事例として説明します。

/Users/UserName/Documents/Python/hello.py

「Documents/」のように、末尾に「/」をつけることでディレクトリであることを表します。最初の「/」は、階層の最上位にあるディレクトリであることを表し、このようなディレクトリを「ルートディレクトリ」といいます。

ファイルパスを指定するには、「絶対パス」と「相対パス」の2種類の方法があります。

ルートディレクトリから指定したパスを絶対パスといいます。「/Users/UserName/Documents/Python/hello.py」が絶対パスです。

一方、カレントディレクトリから指定したパスを相対パスといいます。この場合、「./Python/hello.py」が相対パスです。「./」はカレントディレクトリ内であることを表しています。

カレントディレクトリを移動するには「cd」コマンドを使用します。cdは「change directory」の略です。カレントディレクトリをPythonにする場合、

% cd Python

 

でカレントディレクトリを移動できます。カレントディレクトリ内であれば移動先のディレクトリ名(ディレクトリ内のディレクトリを「サブディレクトリ」といいます。)を指定すれば良いのですが、それ以外の階層が異なるディレクトリを指定する場合は、絶対パスか相対パスで移動先を指定してください。

なお、一つ上の階層に移動する場合は、cdコマンドに続けて「../」とします。これによりカレントディレクトリが「Documents」から「UserName」に移動します。

% cd ../

 

なお、カレントディレクトリのパスは、

% pwd

 

で確認できます。「pwd」は「print working directory」の略です。

シバン

指定方法②では、Pythonで実行することをファイル内で明示する必要があります。そのため、スクリプトファイルの1行目に「シバン」

#!/usr/bin/env python3

 

を追加します。

パーミッション

指定方法②では、スクリプトファイルの「パーミッション」(アクセス権)に実行権が付与されている必要があります。パーミッションは、

% ls -l

 

で確認できます。「ls」コマンドは「list segments」の略で、カレントディレクトリ内のファイル名やフォルダ名を表示できます。

「l」は「long」の略で、「ls -l」コマンドでカレントディレクトリ内のファイルやフォルダの詳細を表示できます。

「ls -l」コマンドの結果、行の最初に以下のような情報が表示されます(ファイル等によって異なりますので、以下は一例です。)。

- rwx r-x r-x

1文字目 「-」はファイル、「d」はディレクトリ
2〜4文字目 userのアクセス権
5〜7文字目 groupのアクセス権
8〜10文字目 otherのアクセス権

アクセス権は「r」がRead(読み込み)、「w」がWrite(書き込み)、「x」がeXecute(実行)、「-」が権限無しを表します。

上記の場合、userのアクセス権は、読み込み・書き込み・実行が全て可能です。groupとotherは、読み込みと実行が可能で、書き込みは権限無しであることを表しています。

ファイルに権限を設定する場合、「chmod」コマンドを使用します。chmodは「change mode」の略です。

chmodに続けて対象(userなら「u」、groupなら「g」、otherなら「o」、全てなら「a」または「ugo」。)を指定し、権限を付与する場合は「+」、権限を禁止する場合は「-」、権限を指定する場合は「=」で繋ぎ、付与・禁止・指定する権限を「r」、「w」、「x」(「rwx」のように複数指定も可。)で指定します。最後に対象とするファイル名(カレントディレクトリ外のファイルの場合はファイルパス)を入力します。例えば、

% chmod g+x hello.py

 

は、grouphello.pyの実行権を追加するコマンドとなります。